如何在 C++ 中构造静态类成员的最佳方法?

问题描述 投票:0回答:1

简单地说,我有一个带有 Foo() 构造函数的 Foo 类。

另一个 Bar 类包含 Foo 类的静态成员:Foo 成员正在初始化(但未构造)。

构造静态成员的最佳方法是什么,换句话说,我应该在哪里以及如何确保在静态成员上调用构造函数?

我应该转向单身吗?

// In demo.h

class Foo {
  Foo() {
    // doing important stuff in there
  }
};

class Bar {
   static Foo foo;
};

// In demo.cpp
Foo Bar :: foo = Foo();


void main() {
  Bar bar;

  // bar.foo is not constructed yet. How to do that?
}
c++ constructor static
1个回答
0
投票

与您似乎相信的相反,您现在所做的应该正确调用

Foo
的 ctor。

不过,你做的比真正需要的多了一点。你可以减少这个:

Foo Bar :: foo = Foo();

致:

Foo Bar::foo;

与之前一样,您(理论上)默认构造一个临时对象,然后从该临时对象复制构造

Bar::foo
。我不认为这有什么意义(尽管一个理智的编译器通常不会这样做——它只是默认直接构造对象,所以你的额外代码只是增加了视觉噪音)。

© www.soinside.com 2019 - 2024. All rights reserved.