目录:
1.基类和派生类对象赋值转换
2.派生类当中的6个默认成员函数
---------------------------------------------------------------------------------------------------------------------------
派生类对象可以赋值给 基类的对象/基类的指针/基类的引用(形象的说法叫切片或者切割)
之前来说同类型的对象可以赋值转换,不同类型的赋值转换要么是强制类型转换,要么就是隐式类型转换
但是子类转到父类的时候,没有发生隐式类型转换和强制类型转换(虽然这里是不同类型)
我们可以简单看出来这里不是隐式类型转换
我们这里算是一个特殊的支持,语法天然支持的
基类对象可不能赋值给派生类对象(少了派生类中的一部分东西)
2.派生类当中的6个默认成员函数
派生类(子类)默认生成的构造函数会做什么事情???
1.对于自己的成员,跟类和对象一样。(对于内置类型不处理,当年给了缺省值就用缺省值去处理,对于自定义类型会调用自定义类型的构造函数)
2.继承的父类成员,必须调用父类的构造函数初始化
如果我们的父类没有默认构造函数呢 ,或者说我们不想让我们的Pter去初始化我们_name变量呢
父类没有默认构造函数了 ------- 那么子类只能自己自定义构造函数
上面是我们的构造,那我们的子类的拷贝构造呢
编译器生成默认拷贝构造
1.自己成员,跟类和对象一样(内置类型完成值拷贝,对于自定义类型调用它的拷贝构造)
2.继承的父类成员。必须调用父类拷贝构造初始化
如果我们想完成深拷贝,我们这时候得显示的写拷贝构造
编译器默认生成的operator=
1.自己的成员,跟类和对象一样(内置类型完成值拷贝,对于自定义类型调用它的赋值)
2.继承了父类的成员,必须调用父类的赋值
编译器生成的析构函数
同上
1.内置类型不处理,自定义类型调用它的析构函数
2.继承的成员,调用父类的析构函数处理
我们可以来观察一个现象
为什么父类是析构次数是子类析构次数的double --- 原因是什么呢???
所以我们不需要显示调用父类析构函数
每一个子类析构函数后面会自动调用父类析构函数(这样才能保证先析构子类,再析构父类)