我有一个C++类(class1),另一个类(class2)的静态对象作为私有成员。
我知道在使用程序时,我必须初始化静态对象,我可以为这个(不需要的值)使用默认的构造函数。
只有在创建包含类(class1)的对象时,才能将静态对象初始化为我想要的值一次吗?
任何帮助都将不胜感激。
发布于 2012-05-08 21:29:17
是。
// interface
class A {
static B b;
};
// implementation
B A::b(arguments, to, constructor); // or B A::b = something;但是,即使您不创建A类的实例,它也会被初始化。除非您使用指针并在构造函数中初始化它一次,否则您无法使用任何其他方法,但这可能是一个糟糕的设计。
但是,如果你真的想要,下面是怎么做的:
// interface
class A {
A() {
if (!Bptr)
Bptr = new B(arguments, to, constructor);
// ... normal code
}
B* Bptr;
};
// implementation
B* A::Bptr = nullptr;然而,正如我所说的,这很可能是一个糟糕的设计,而且它存在多线程问题。
https://stackoverflow.com/questions/10499582
复制相似问题