关于Virtual继承的事
最近写的代码涉及到一部分Virtual继承的问题,我把原型提取出来如下:
#include <iostream>
using namespace std;
class A{
public:
explicit A(int a){
cout << "A(a)"<<endl;
}
explicit A() {
cout << "A()"<<endl;
}
virtual ~A(){
}
};
class B: virtual public A {
public:
explicit B(int a): A(a){
cout <<"B(b)"<<endl;
}
explicit B() {
cout << "B()"<<endl;
}
virtual ~B(){
}
};
class C: virtual public B {
public:
explicit C(int c):B(c) {
cout << "C(c)"<<endl;
}
virtual ~C(){
}
};
int main () {
C c(2);
return 1;
}
本来希望的结果是:
A(a)
B(b)
C(c)
但是得到的实际结果是:
A()
B(b)
C(c)
内存地址显示,只有一个虚拟表;
在google上看到一个老外说: 虚拟继承看作是本身的一个指针,真心没理解。