虚拟继承
关键词:virtual
。中间类加关键词后,基类成为虚基类
为什么要使用虚拟继承
在类的多层继承时,如果中间类继承了同一个基类,那派生类就会继承两套基类,产生二义性。
同时,虚拟继承时,派生类要给出虚基类的构造。
#include<iostream>
//虚拟继承
using namespace std;
class Person
{
protected:
string name;
public:
Person(string Name):name(Name){}
~Person(){}
string getName()
{
return name;
}
void setName(string name)
{
this->name = name;
}
};
class Student : virtual public Person
{
protected:
string id;
public:
Student(string Name, string Id):Person(Name),id(Id){}
~Student(){}
};
class Employee : virtual public Person
{
protected:
string emId;
public :
Employee(string Name,string EmId):Person(name),emId(EmId){}
~Employee(){}
};
class StuEmployee : public Student,public Employee
{
public:
StuEmployee(string Name,string Id,string EmId):