c++ - 虚拟基类对象创建

标签 c++ virtual-functions

我有关于虚拟基类的问题。

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/

相关文章:

c++ - 为什么我的按钮不能正常工作? SDL2

c++ - 同步、线程安全接口(interface)的正确锁定模型

c++ - 抽象类未定义对`vtable for的引用的生成器错误

c++ - 是否需要诊断使用不完整的类型?

c++ - 实现真值表的一般模式

c++:覆盖父类中的模板成员函数

c++ - 使用范围解析运算符时在构造函数中调用虚方法是否安全?

c++ - OOP C++、虚函数和新运算符

c++ - 异常处理+多态,如果异常方法不起作用,在同一个类中不起作用

c++ - 在弱光条件下性能更好(OpenCV)?