派生类不能继承基类的构造函数,必须自己定义构造函数进行新增数据成员初始化工作,如果想同时初始化基类数据成员,必须调用基类构造函数。
例如:
1 class stu1 2 { 3 public: 4 stu1(int i, string strn, double in) 5 { 6 ID = i; 7 name = strn; 8 income = in; 9 } 10 11 private: 12 int ID; 13 string name; 14 double income; 15 }; 16 17 class stu2 :public stu1 18 { 19 public: 20 stu2(int i, const string str, double in, string p) :stu1(i, str, in) 21 { 22 phoneNo = p; 23 } 24 25 private: 26 string phoneNo; 27 }; 28 29 int main() 30 { 31 stu2 st(1, "Tom", 1000.02, "12345"); 32 33 }
基类也可以使用初始值列表的构造函数:派生类的构造函数不用改变
1 class stu1 2 { 3 public: 4 stu1(int i, string strn, double in) :ID(i), name(strn), income(in) { } 5 6 private: 7 int ID; 8 string name; 9 double income; 10 };
构造一个类的对象之前,必须先构造其中的嵌套类对象,若没给嵌套类传参数,则调用嵌套类的默认构造函数,否则调用嵌套类的带参数的构造函数