派生类的构造函数

来源:互联网 发布:ncut算法matlab 编辑:程序博客网 时间:2024/05/16 06:53

基类的构造函数不能被派生类继承,所以派生类必须自己要有自己的构造函数。那么派生类的构造函数有哪些需要注意的呢?

1.派生类的构造函数形式:

class A{public:    A(参数列表){}};class B :public A{private:A a;public:     B(参数列表):A(参数列表),a(参数列表){B的新添成员}<span style="font-family:Arial, Helvetica, sans-serif;">};</span>
如上,派生类的构造函数B必须后跟“:”。然后是基类构造函数A,以及基类的对象成员。大括号里的内容才是派生类B新添的成员的初始化。该过程要实现派生类B向基类A的构造函数和对象成员a传递参数的功能,所以他们的参数均不带参数类型,即都为实参。

如果基类构造函数A本身不带参数,则不用传递参数,如果派生类也没有自己的新成员,则构造函数B也就没有参数。

2.派生类构造函数调用顺序:

先是调用基类的构造函数A,后是B对象成员a的构造函数,最后是派生类B自己的成员的初始化。

实现代码如下:

#include<iostream>using namespace std;class Student{     private:              int num;              string name;               char sex;      public:             Student(int num_, string name_, char sex_)             {                         num = num_;                         //cout << num << endl;                         name = name_ ;                         //cout << name << endl;                         sex = sex_;                         cout << sex << endl;                      cout << "基类的构造函数" << endl;                    }  };class Student1: public Student{      private:             string addr;             string major;             Student object_1;      public:             Student1(string addr_, string major_, int num_, string name_, char sex_,              char sexobject_):Student(num_, name_, sex_), object_1(num_, name_, sexobject_)             {                        addr =   addr_;                        //cout <<  addr << endl;                        major = major_;                         // cout << major << endl;                     cout << "派生类新成员构造函数" << endl;                        }}; int main(){    Student1 object("北京", "计算机", 12120493, "chenjiayuan", 'M', 'W');    system("pause");    return 0; }


0 0
原创粉丝点击