c++ - 执行某些代码后可以显式调用构造函数吗?

标签 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);
    }
}

我如何完成这个(不使用初始化函数)?

编辑:我更新了示例。它现在表明默认构造函数必须最后出现。否则,displayWindow 将不会考虑任何更新的变量。

最佳答案

像这样:

Foo(int bar, int baz) :
    Foo(initializeAnotherStaticLibrary(bar, baz) == -1 ? bar : baz)
{
}

(请注意,委托(delegate)构造函数是仅在 C++11 及更高版本中支持的功能。)

关于c++ - 执行某些代码后可以显式调用构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12113127/

相关文章:

c++ - 如何使用opencv在图像中绘制矩形?

C++ 游戏访问单独的类变量

c++ - 什么是 `auto classMemberFunction()->void {}` 签名?

c++ - 使用私有(private)构造函数的程序出错

java - 这行得通吗?我正在尝试制作一个多维数组,我很确定它可以在 Java 中运行,但我不知道 C++

c++ - 在 C++ 中重载运算符 *

java - Java 中的构造函数和隐藏字段

javascript - 使用 Javascript 在构造函数中使用数组

java - 我应该在声明中还是在构造函数中实例化实例变量?

c++ - 是否可以在运行时切换到不同的基类构造函数?