在基本构造函数之前初始化成员。可能?

nik*_*ack 5 c++

我有以下代码:

class A{
public:
    A(int* i){
        std::cout << "in A()" << i << std::endl;
    }
};

class B: public A{
public:
    B(): i{new int{10}}, A{i}{
        std::cout << "in B()" << std::endl; 
    }

private:
    int* i;
};

int main()
{
    B b;
}
Run Code Online (Sandbox Code Playgroud)

A构造函数中,我有0(这是预期的)。但是我想先初始化i。有可能吗?

gsa*_*ras 2

i是 class 的数据成员B,因此为了创建,B必须首先创建 class 的对象。

正如@Arthur 评论的那样,有一种方法是这样的:

B(): A{i = new int{10}} { 
  std::cout << "in B()" << std::endl; 
}
Run Code Online (Sandbox Code Playgroud)

  • 不过,还是有办法的。你可以这样做:`B(): A{i = new int{10}}{ std::cout &lt;&lt; "in B()" &lt;&lt; std::endl; }` (4认同)