派生 class 会在其自己的构造函数之前调用基 class 中的受保护构造函数吗?

Will a derived class call a protected constructor in base class before its own constructor?

我的派生 class 应该经历与基础 class 相同的初始化过程,初始化一些变量并设置一些状态。以下是一个简化的例子:

class Base
{
    protected:
        int x = 0;

        Base() { x = 1; }
    
};

class Sub : public Base
{
    public:
        void printX()
        {
            printf("%d", x);
        }
};

我的子class“子”的默认构造函数会调用基class中的受保护构造函数吗?这意味着如果打印,subclass 中的 x 将为 1。

编辑:为 printX() 添加了 return 类型

是的,默认构造函数是派生的 class 将调用其基类的默认构造函数。 (虚拟继承变得更有趣,但是代码片段中有 none,所以我们不需要深入研究那些恐怖的东西)。

有关详细信息,请参阅 https://en.cppreference.com/w/cpp/language/default_constructor 上的 隐式定义的默认构造函数

...That is, it calls the default constructors of the bases and of the non-static members of this class.