1、为什么要有虚拟基类?
虚拟基类是C++中一个重要的概念,用于解决类多重继承中的菱形继承问题。
在多重继承中,如果一个派生类通过多条路径继承同一个基类,那么该基类在派生类中会有多个副本,称为菱形继承问题。
A
/ \
B C
\ /
D
在上面的图中,类D继承自类B和类C,而类B和类C都继承自类A。在这种情况下,类D中将包含两个类A的副本,会导致资源浪费和不必要的复杂性。
2、代码示例
#include<iostream>
#include<string.h>
using namespace std;
class A{
private:
int n;
public:
A(int x):n(x){
cout << "A()" << endl;
}
~A(){
cout << "~A()" << endl;
}
};
class B: public A{
private:
int n;
public:
B(int x):A(x), n(x){
cout << "B()" << endl;
}
~B(){
cout << "~B()" << endl;
}
}