您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

C++多层派生时的构造函数

时间:01-10来源:作者:点击数:

一个类不仅可以派生出一个派生类,派生类还可以继续派生,形成派生的层次结构。在上面叙述的基础上,不难写出在多级派生情况下派生类的构造函数。

通过例下面的程序,读者可以了解在多级派生情况下怎样定义派生类的构造函数。相信大家完全可以自己看懂这个程序。

[例11.7] 多级派生情况下派生类的构造函数。

#include <iostream>
#include<string>
using namespace std;
class Student//声明基类
{
public://公用部分
   Student(int n, string nam)//基类构造函数
   {
      num=n;
      name=nam;
   }
   void display( )//输出基类数据成员
   {
      cout<<"num:"<<num<<endl;
      cout<<"name:"<<name<<endl;
   }
protected://保护部分
   int num;//基类有两个数据成员
   string name;
};
class Student1: public Student//声明公用派生类Student1
{
public:
   Student1(int n,char nam[10],int a):Student(n,nam)//派生类构造函数
   {age=a;}//在此处只对派生类新增的数据成员初始化
   void show( ) //输出num,name和age
   {
      display( ); //输出num和name
      cout<<"age: "<<age<<endl;
   }
private://派生类的私有数据
   int age; //增加一个数据成员
};
class Student2:public Student1 //声明间接公用派生类Student2
{
public://下面是间接派生类构造函数
   Student2(int n, string nam,int a,int s):Student1(n,nam,a) {score=s;}
   void show_all( ) //输出全部数据成员
   {
      show( ); //输出num和name
      cout<<"score:"<<score<<endl; //输出age
   }
private:
   int score; //增加一个数据成员
};
int main( )
{
   Student2 stud(10010,"Li",17,89);
   stud.show_all( ); //输出学生的全部数据
   return 0;
}

运行时的输出如下:

num:10010
name:Li
age:17
score:89

请注意基类和两个派生类的构造函数的写法。基类的构造函数首部:

    Student(int n, string nam)

派生类Student1的构造函数首部:

    Student1(int n, string nam],int a):Student(n,nam)

派生类Student2的构造函数首部:

    Student2(int n, string nam,int a,int s):Student1(n,nam,a)

注意不要写成:

    Student2(int n, string nam,int a,int s):Student1(n,nam),student1(n, nam, a)

不要列出每一层派生类的构造函数,只需写出其上一层派生类(即它的直接基类)的构造函数即可。在声明Student2类对象时,调用Student2构造函数;在执行Student2构造函数时,先调用Student1构造函数;在执行Student1构造函数时,先调用基类Student构造函数。初始化的顺序是:

  • 先初始化基类的数据成员num和name。
  • 再初始化Student1的数据成员age。
  • 最后再初始化Student2的数据成员score。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门