【发布时间】:2020-03-25 08:48:31
【问题描述】:
[使用 C++] 我知道 Singleton 的模式,其中构造函数是 private,并且有一个指向 class 的静态指针,从某个 static GetInstance() 函数返回。但是什么时候需要公共构造函数的类,比如这个:
//hpp file
class MyClass{
static MyClass * myptr;
public:
static const MyClass * GetInstance() { return myptr; }
MyClass() { myptr = this };
~MyClass() {}
...
}
//cpp file
MyClass * MyClass::myptr = nullptr;
每次我们使用构造函数创建新对象时会发生什么? myptr 被覆盖?这种模式有哪些可能的用例?
【问题讨论】:
-
简单的答案是永远不需要这种代码。它从何而来?它的作者认为有什么好处?
-
另外,你将如何删除与这条指令
MyClass() { myptr = this };相关的myptr被覆盖的实例? -
它来自我正在使用的代码库
-
@user2376997 如果可能,您应该与代码的作者交谈。但对我来说,这只是看起来很糟糕的代码。
-
GetInstance应该重命名为GetLastInstance,但~MyClass() {}所以会创建悬空指针...