谁在虚拟继承中调用构造函数?

Lea*_*ner 4 c++ virtual object multiple-inheritance vtable

#include<iostream>

class base{
public:
base(){std::cout<<"In base";}
};

class dv1:virtual private base {
public:
dv1(){std::cout<<"In DV1";}
};

class dv2:virtual private base {
public:
dv2(){std::cout<<"In DV2";}
};

class drv : public dv1, public dv2 {
public:
drv() {std::cout<<"Why is this working";}
};

int main() {
drv obj;

return 0;
}
Run Code Online (Sandbox Code Playgroud)

不是在虚拟继承的情况下,调用构造函数是大多数派生类的责任吗?注意:这里基地是虚拟和私下继承的.

nos*_*nos 5

您的构造函数drv没有显式调用其基类的构造函数,因此编译器将生成对基类的无参数构造函数的调用

  • `base :: base()`是公共的,所以`drv`可以访问这个构造函数.`base`是`dv1`和`dv2`的私有基础这一事实并不重要. (2认同)