多继承和虚基函数的应用
2019-07-27 本文已影响0人
始于尘埃
//多继承和虚基函数的应用
/*
1.基函数的作用:减少内存空间;避免调用时产生的冲突(二义性).
2.并不建议使用多继承(不好修改,不好维修).
*/
#include <iostream>
#include <string>
using namespace std;
class Person{
public:
Person(string nam,char s,int a){
name = nam;sex = s;age = a;
}
protected: //基函数设定为protect,这可以供派生对象使用
string name;
char sex;
int age;
};
class Teacher:virtual public Person{
public:
Teacher(string nam,char s,int a,string t):Person(nam,s,a){
title = t;
}
protected:
string title;
};
class Student:virtual public Person{
public:
Student(string nam,char s,int a,float sco):Person(nam,s,a),score(sco){}//初始化列表
protected:
float score;
};
//多继承
class Graduate:public Teacher,public Student{
public:
Graduate(string nam,char s,int a,string t,float sco,float w)
:Person(nam,s,a),Teacher(nam,s,a,t),Student(nam,s,a,sco),wage(w){
} //初始化时,基函数,和两个直接的继承对象都要初始化
void show(){
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
cout<<"title:"<<title<<endl;
}
private:
float wage;
};
int main(){
Graduate grad1("Rice",'f',24,"assistent",11,212);//初始化
grad1.show();
return 0;
}