这个"virtual"有什么作用?
由于C++支持多重继承,所以对于一个派生类中有几个直接父类,
而几个直接父类中有几个可能分别继承自某一个基类(就是父类的父类),
这样在构造最终派生类时,会出现最终派生类中含有多个同一个基类的情况,
就会产生二义性的问题(不知道该调用哪个基类的成员变量和函数),
为解决此问题,需要使用虚基类,
即只对此基类生成一块内存区域,这样最终派生类中就只会含有一个基类了
典型的需要用虚基类的情况如下:
其中D继承自BC,BC分别继承自A,所以A要分别被BC虚拟继承
代码示例
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
class CPeople
{
protected:
string name;
char sex;
int age;
public:
CPeople(string a,char b,int c):
name(a),sex(b),age(c){
}
void print() {
cout << "People:" << endl;
printp();
}
void printp() {
cout <<