子类对象创建时,会先调用父类的构造函数

1.如果父类构造函数带参数

2.如果父类同时有带参和不带参的,则子类默认调用无参的

**c++**之哪些成员函数不能被继承

  1. 构造函数:在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。
  2. 析构函数:析构函数也不会被子类继承,只是在子类的析构函数中会调用父类的析构函数
  3. 运算符重载赋值函数:赋值运算符重载函数也不会被子类继承,只是在子类的赋值运算符重载函数中会调用父类的赋值运算符重载函数。

菱形继承问题——最顶层的父类会被两次调用

1. 数据冗余

2. 二义性

解决办法——虚继承,即两个父类虚继承顶层父类