在函数内部定义静态对象是正确的方法吗?
Is it right approach to define a static object inside a function?
class MyClass {
public:
static MyClass& getInstance() {
static MyClass obj;
return obj;
}
};
int main()
{
MyClass& obj1 = MyClass::getInstance();
MyClass& obj2 = MyClass::getInstance();
|
|
MyClass& obj1000 = MyClass::getInstance();
}
如果多次调用getInstance()函数,它是否总是返回相同的对象和所有obj1, obj2…Obj1000将引用相同的对象
是的,这是一个有效的方法,是的,所有objXXX将引用相同的对象。该对象将在函数第一次被调用时被构造。
可以,但是要注意线程问题。如果您在启动任何其他将调用该方法的线程之前没有调用getInstance()
,则此代码将受竞争条件的约束。
从技术上讲,这是合法的c++,您将始终获得相同的对象。它被称为单例反模式,应该像避免瘟疫一样避免,因为它会产生可怕的不可维护的软件。这是正确的方法吗?
相关文章:
- 方法内部但循环仍得到预期的不合格id错误C++
- 在C++中更改结构内部元素的方法?
- 虚拟基类在内部如何工作?编译器如何解析对基方法的调用?
- 如何在JNI中从线程内部调用JAVA方法
- 方法c++内部出现异常
- 正确的方法是什么?调用指针到指针到指针内部的函数?
- 使用虚拟变量对 std::vector 内部循环进行切片的最佳方法
- 在静态方法内部使用函数时,会出现LNK2019未解析的外部
- 更改方法内部的对象
- 从直接调用的静态方法内部获取类对象指针
- 是否有可能在C++中的静态成员方法内部调用非静态成员方法
- 如何获取方法内部int数组(方法参数)的长度
- *this=NULL在模板类中的方法内部意味着什么
- Setter不在类方法内部工作
- c++中在方法内部创建的对象实例的持久性
- 方法内部的简单c++成员引用(方法解析后的链接器错误)
- 在pass-by-const-reference方法内部的c++ pass-by-non-const-reference
- 在一个方法内部,操作另一个方法的返回值
- 为什么我没有得到编译错误时,我从const方法内部的ref成员调用非const方法
- 指向对象方法内部对象的null指针