多继承和虚基函数的应用

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;
}
上一篇 下一篇

猜你喜欢

热点阅读