C++ 中虚基类的作用主要是为了继承间接的共同基类时只保留一份成员
假设A有父类B,C。
B,C又有共同父类D,那么假设D中有一个公有的fun方法,那么B中继承了fun方法,C中也继承了fun方法,由此A继承了两个fun方法。
虚基类的一般形式为:
class 派生类名: virtual 继承方式 基类名
#include <iostream>
using namespace std;
#include <string>
class Person {
public:
Person(string nam, char s, int a) {
name = nam;
sex = s;
age = a;
}
protected:
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 m) :
Person(nam, s, a), Teacher(nam, s, a, t), Student(nam, s, a, sco), money(m) {}
void show();
private:
float money;
};
void Graduate::show() {
cout << "name:" << name << endl;
cout << "age:" << age << endl;
cout << "sex:" << sex << endl;
cout << "score:" << score << endl;
cout << "title:" << title << endl;
cout << "money:" << money << endl;
}
int main() {
Graduate grad1("ZRC", 'n', 24, "ok", 99.9, 1200);
grad1.show();
getchar();
return 0;
}