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

C++派生类的赋值重载

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

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

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

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

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

    二、赋值运算符重载

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

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

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

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

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

    相关文章

      网友评论

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

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