虚继承、虚函数空间占用
我是在vc6.0下测试
对于这方面不太清楚,网上看了资料(下面的博客)
http://blog.csdn.net/haoel/archive/2007/12/18/1948051.aspx
对虚函数表比较清楚了,但是对于虚继承和虚函数混合时函数所占空间还不是很清楚
1.在类中包含虚函数的时候会有一个指针指向虚函数表,当虚继承时也是一个指针吗?
网上说也是指向一个虚函数表,这个虚函数表和虚函数的那个虚函数表是一个东西吗?
2.当一个基类和其派生类都有虚函数时,如果派生类不是虚继承,那么派生类中应该只有一个指针指向虚函数表,
但是当改为虚继承的时候,占用空间就增大了8,不知道增大的是不是两个指针,这时候这两个指针分别指向什么
内容呢?是不是这时候基类和派生类的虚函数表就分开了,增加了一个指针,但是另一个指针是什么呢?(这里应该涉及到虚继承的具体实现方法吧,最好也能说明一下)
3.对于多层的继承情况应该和2是一样的吧,如果每一层都有虚函数,那么假设有N层继承,则当所有继承都为普通继承时最底层的子类中应该有N-1个指针指向虚函数表。但是如果为虚继承,那么会有2N(2N-1 ?)个指针。