我有关于虚拟基类的问题。
class a
{
public:
a();
~a();
};
class b: virtual public a
{
public:
b();
~b();
};
class c: virtual public a
{
public:
c();
~c();
};
class e: public b, c
{
public:
e();
~e();
};
每当我创建类 e
的对象时,a
对象将通过哪个类在 e
中创建?
最佳答案
两者,都会共享。
如果您的问题是关于布局的,则未指定。是的,有了虚拟继承,一个对象——当它不是一个完整的对象时——在内存中可能是不连续的。
如果 a 没有默认构造函数,则需要在 e 中有一个初始化列表,它将提供所需的参数; b 和 c 的构造函数所隐含的那些将被忽略。
关于c++ - 虚拟基类对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11119699/