多级派生情况下派生类的构造函数

本文介绍多级派生情况下派生类构造函数的实现方式。通过实例展示构造函数的调用顺序及如何初始化不同层级的数据成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多级派生情况下派生类的构造函数:

 

/*在执行student2构造函数时,先调用student1的构造函数;

在指向student1构造函数时,先调用基类student构造函数。

初始化顺序:

1---先初始化基类的数据成员num,name

2---再初始化student1的数据成员age

3---最后再初始化student2的数据成员score*/


 

 

//多级派生情况下派生类的构造函数
#include <iostream>
#include<string.h>

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,string nam,int a):student(n,nam)
      {
          age=a;
      }
      void show()
      {
          display();     //输出num,name
          cout<<"age:"<<age<<endl;  //输出age
      }

      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,age
           cout<<"score:"<<score<<endl;//输出score
       }

       private:
         int score;//新增加一个数据成员
};
int main()
{
    student2 stud(10010,"Li--Ming",17,98);
    stud.show_all();//输出学生的全部数据

    return 0;
}

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值