子类不会继承父类的“构造函数”和“析构函数” 实例化子类对象时候,调用顺序: 构造函数:先调用父类的,再调用子类的 析构函数:与构造函数调用顺序正好相反(先调用子类的,再调用父类的)---------------------------------------------------------------------------------------------------注意:当父类中构造函数有参,子类需要用初始化列表的方式,指定调用父类的哪个构造函数 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; class Base // 父类 { public: Base(int a) { // 父类只有有参构造,给父类维护的值初始化 this->m_A = a; } public: int m_A; };------------------------------------------------------------------------------------- class Son : public Base // 子类 { public: /* Son(int a) //无法创建, 子类通过有参构造实例化对象,一定需要调用父类的默认构造 { 因为父类中没有默认构造,系统也没有默认提供 this->m_A = a; } */ // 解决方式1:在父类中 手动添加 默认构造函数, // 解决方式2: Son(int a = 10) : Base(a) {} // 使用“参数列表”形式,调用父类的有参构造函数,给父类维护的值初始化 };--------------------------------------------------------------------------------------- int main() { Son s; cout << s.m_A << endl; // 因为默认参数 结果: 10 Son s1; // 此时 s1.m_A = 10 s1.m_A = 50; cout << s1.m_A << endl; // 结果: 50
Son s3(100); cout << s3.m_A << endl; // 结果: 100 }
|