赋值兼容——
子类对象的引用和指针
可以赋值给父类对象的引用和指针
构造器(包括拷贝构造器)和析构器是
不能被继承
的this指针——在对象创建的时候生成的,而
参数初始化列表
则是在this指针创建之前
开始作用的,所以说参数化列表
的时候是不能使用this指针
的
一、子类和父类之间的拷贝构造器的使用
- 子类未实现拷贝构造的时候,会调用父类的拷贝构造器(无论
父类的拷贝构造器
是否实现)——这时属于浅拷贝
。- 子类一旦实现拷贝构造,则必须显式地调用父类的拷贝构造器 —— 这时相当于要实现
深拷贝
了。
二、赋值运算符重载
因为赋值运算符重载
是一个函数,所以不像拷贝构造器
,赋值运算符函数是可以重载的——
要提前处理自赋值
的情况
- 子类中没有实现
赋值重载
的时候,会调用父类的赋值重载(无论父类的赋值重载是否实现)- 子类一旦实现
赋值重载
,则不会去主动调用父类的赋值重载
三、子类和父类中的成员函数【重名】
- 只要函数名相同(参数可以不同),就会发生一种叫
shadow
的现象——子类会把父类重名的成员shadow。
解决方法:成员函数前面加上
命名空间
(也就是类名
)