美文网首页
C++派生类的赋值重载

C++派生类的赋值重载

作者: StevenHD | 来源:发表于2020-12-25 14:48 被阅读0次
  • 赋值兼容——子类对象的引用和指针可以赋值给父类对象的引用和指针

  • 构造器(包括拷贝构造器)和析构器是不能被继承

  • this指针——在对象创建的时候生成的,而参数初始化列表则是在this指针创建之前开始作用的,所以说参数化列表的时候是不能使用this指针

一、子类和父类之间的拷贝构造器的使用

子类的拷贝构造器中的参数化列表中不能使用this指针
  1. 子类未实现拷贝构造的时候,会调用父类的拷贝构造器(无论父类的拷贝构造器是否实现)——这时属于浅拷贝
  2. 子类一旦实现拷贝构造,则必须显式地调用父类的拷贝构造器 —— 这时相当于要实现深拷贝了。

二、赋值运算符重载

因为赋值运算符重载是一个函数,所以不像拷贝构造器,赋值运算符函数是可以重载的——

子类赋值运算符实现,重载了父类的`赋值运算符函数`
要提前处理自赋值的情况
  1. 子类中没有实现赋值重载的时候,会调用父类的赋值重载(无论父类的赋值重载是否实现)
  2. 子类一旦实现赋值重载,则不会去主动调用父类的赋值重载

三、子类和父类中的成员函数【重名】

  • 只要函数名相同(参数可以不同),就会发生一种叫shadow的现象——子类会把父类重名的成员shadow。

解决方法:成员函数前面加上命名空间(也就是类名

相关文章

  • C++派生类的赋值重载

    赋值兼容——子类对象的引用和指针可以赋值给父类对象的引用和指针 构造器(包括拷贝构造器)和析构器是不能被继承的 t...

  • 孙世龙_9.18学习总结

    1.派生类继承了基类的除了构造函数、析构函数、拷贝构造函数和赋值运算符重载函数之外的所有成员,因此派生类对象由两部...

  • C++ 基础

    RAII惯用法:C++资源管理的利器 一文说尽C++赋值运算符重载函数(operator=) C 和 C++ 区别...

  • 1.2.18_C++ 赋值运算符重载

    C++ 重载运算符和重载函数 就像其他运算符一样,您可以重载赋值运算符( = ),用于创建一个对象,比如拷贝构造函...

  • 没有学不会的C++:复制操作符怎么写

    C++ 中的操作符重载可以让我们的代码更符合人们的阅读习惯,而 operator= 赋值操作符又是最常被重载的操作...

  • 全面梳理 C++ 拷贝构造与赋值运算符重载(operator=)

    本文全面梳理 C++ 的拷贝构造与赋值运算符重载(operator=) 默认拷贝构造函数和赋值运算符 在默认情况下...

  • 9.18学习总结

    今天学了继承和派生。 派生类:继承了基类的除了构造函数、析构函数、拷贝构造函数和赋值运算符重载函数之外的所有成员,...

  • C++ - public继承的赋值兼容规则

    public继承的赋值兼容规则 派生类的对象可以赋值给基类对象 派生类对象可以初始化基类引用 派生类对象的地址可以...

  • c++快速入门7:类和对象B:重载、继承和重写

    重载方法(Overloading) 就像函数重载,类方法也可以被重载--包括构造方法。 继承类的属性 派生类除了自...

  • 关于虚函数

    (1)派生类对象直接向基类赋值,赋值效果,基类数据成员和派生类中数据成员的值相同;(2)派生类对象可以初始化基类对...

网友评论

      本文标题:C++派生类的赋值重载

      本文链接:https://www.haomeiwen.com/subject/guutbktx.html