在执行一些代码后可以显式调用构造函数吗?

cha*_*m15 1 c++ constructor

我想在调用第二个构造函数之前做一些处理.例如:


class Foo {
    Foo(){ displayWindow(); }

    //This is possible
    Foo(int bar) : Foo() { windowSize = bar; }

    //But how do I do processing before calling the second constructor?
    Foo(int bar, int baz) {
        addLabel(baz); // prototype = void addLabel(int)
        Foo(bar);
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何实现这一目标(不使用初始化函数)?

编辑:我更新了这个例子.它现在显示默认构造函数HAS最后发生.如果没有,displayWindow不会考虑任何更新的变量.

GMa*_*ckG 5

像这样:

Foo(int bar, int baz) :
    Foo(initializeAnotherStaticLibrary(bar, baz) == -1 ? bar : baz)
{
}
Run Code Online (Sandbox Code Playgroud)

(请注意,委托构造函数是仅在C++ 11中支持的功能.)