你能用C++调用实例化对象的类构造函数表达吗?

Lak*_*hmi 9 c++ constructor

创建类的实例后,我们可以显式调用构造函数吗?例如

class A{
    A(int a)
    {
    }
}

A instance;

instance.A(2);
Run Code Online (Sandbox Code Playgroud)

我们可以这样做吗?

Mic*_*ngs 15

您可以使用新的展示位置:http://en.wikipedia.org/wiki/Placement_new允许

new (&instance) A(2);
Run Code Online (Sandbox Code Playgroud)

但是,从您的示例中,您将在对象上调用两次构造函数,这是非常糟糕的做法.相反,我建议你做

A instance(2);
Run Code Online (Sandbox Code Playgroud)

Placement new通常仅在您需要预分配内存时使用,例如在自定义内存管理器中.


bro*_*eld 10

没有.

为集合创建一个方法并从构造函数中调用它.此方法也将在稍后提供.

class A{
    A(int a) { Set(a); }
    void Set(int a) { }
}

A instance;

instance.Set(2);
Run Code Online (Sandbox Code Playgroud)

您可能还需要默认值或默认构造函数.

  • 没错,但即使这是OP所要求的,它几乎不是正确的事情. (3认同)