在派生的过程中,构造函数和析构函数是不继承的,因此在初始化时,派生类的构造函数就必须完成基类的私有变量初始化。
解决问题的思路,在派生类调用基类的构造函数
执行派生类构造函数的顺序是: 调用基类构造函数,对基类数据成员初始化; 调用子对象构造函数,对子对象数据成员初始化; 再执行派生类构造函数本身,对派生类数据成员初始化。 派生类构造函数的总参数表列中的参数,应当包括基类构造函数和子对象的参数表列中的参数。基类构造函数和子对象的次序可以是任意的,如上面的派生类构造函数首部可以写成 Student1(int n, string nam,int n1, string nam1,int a, string ad): monitor(n1,nam1),Student(n,nam) 编译系统是根据相同的参数名(而不是根据参数的顺序)来确立它们的传递关系的。但是习惯上一般先写基类构造函数。 如果有多个子对象,派生类构造函数的写法依此类推,应列出每一个子对象名及其参数表列。
原文地址:http://www.cnblogs.com/jsy306/p/3795099.html