一、构造/析构顺序及继承性 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 class A { private: int _a; public: A(int a = 0): _a(a) { cout A() this endl; } ~A() { cout ~A() this endl; } }; class B : pu
一、构造/析构顺序及继承性
结论: 1.构造顺序:先构造基类,后构造派生类 2.析构顺序:先析构派生类,后析构基类 二、拷贝构造的继承性
结论: 1.先调用基类缺省的构造函数,后调用派生类的拷贝构造函数 2.若派生类没有缺省构造函数A(),就会报错 疑惑:如何去调用基类的拷贝构造而不是缺省构造
结果: 将B类型src传递给A类型的A(const A& src)拷贝构造函数,发生了赋值兼容规则(切片现象) 三、赋值重载不具有继承性
结论:默认情况下仅仅调用了派生类的对象的赋值重载,并未调用基类的赋值重载。 解决方案:
|
2022-05-13
2022-03-10
2021-07-02
2021-08-14
2021-05-17