虚基类的应用-人与教师学生

本文介绍了如何在C++中使用多重继承创建派生类,包括公共基类Person,子类Teacher和Student,以及一个示例Graduate类,展示继承和成员变量的定义及输出方法。

编译器:C++ (g++)

派生类定义:根据所给的基类,完成多重继承下的派生类定义

函数接口定义:

输出样例:

在这里给出相应的输出。例如:

name:Wang-li

age:24

sex:f

score:89.5

title:assistant

wages:1234.5

#include  <iostream>
#include  <string>
using  namespace  std;
//定义公共基类Person
class  Person                                                            
{public:
    Person(string  nam,char  s,int  a)                            
      {name=nam;sex=s;age=a;}
  protected:                                                            
      string  name;
      char  sex;
      int  age;
};
//定义类Teacher
class  Teacher:virtual  public  Person                            
  {public:                                                                  
      Teacher(string  nam,char  s,int  a,string  t):Person(nam,s,a)              
        {title=t;  
        }
    protected:                                                                      
        string  title;                                                                
};
//定义类Student
class  Student:virtual  public  Person                              
  {public:
      Student(string  nam,char  s,int  a,float  sco):      
            Person(nam,s,a),score(sco){}                            
    protected:                                                                          
        float  score;                                                              
  };
  
  /*这里添加派生类的定义*/
int  main(  )
  {Graduate  grad1("Wang-li",'f',24,"assistant",89.5,1234.5);
    grad1.show(  );
    return  0;
}

Ans:

class Graduate:public Teacher,public Student
{
public:
    Graduate(string name, char sex, int age, string title, float score, float wage)
           : Person(name, sex, age), Teacher(name, sex, age, title)
           , Student(name, sex, age, score),wages(wage){};
    void show(){
        cout<<"name:"<<name<<endl;
        cout<<"age:"<<age<<endl;
        cout<<"sex:"<<sex<<endl;
        cout<<"score:"<<score<<endl;
        cout<<"title:"<<title<<endl;
        cout<<"wages:"<<wages<<endl;
    }
private:
    double wages;
};

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值