我想在C++中实现一个简单的单例模式。C++简单的单例实现返回语句的构造函数
#include <iostream>
class simpleSingleton
{
private:
static simpleSingleton * pInstance;
simpleSingleton(){}
simpleSingleton(const simpleSingleton& rs) {
pInstance = rs.pInstance;
}
simpleSingleton& operator = (const simpleSingleton& rs)
{
if (this != &rs)
{
pInstance = rs.pInstance;
}
return *this;
}
~simpleSingleton(){};
public:
static simpleSingleton& getInstance()
{
static simpleSingleton theInstance;
pInstance = &theInstance;
return *pInstance;
}
void demo()
{
std::cout << "simple singleton."
<< std::endl;
}
};
simpleSingleton *simpleSingleton::pInstance = nullptr;
int main()
{
/*Version 1 */
simpleSingleton * p = &simpleSingleton::getInstance(); // cache instance pointer p->demo();
p->demo();
/*Version 2 */
simpleSingleton::getInstance().demo();
return 0;
}
我的问题是关于多个构造函数可供simpleSingleton
类
simpleSingleton(){}' 'simpleSingleton(const simpleSingleton& rs)
构造函数应返回的类的对象。在上面的例子中,这两个构造函数都没有返回语句。然而这似乎是标准的简单实现。这是为什么?
构造函数不返回任何未明确反正。通常使用单例(包括这种情况)使用一种名为'getInstance'的方法来检索对象的实例。如果那是你问的问题? –
在开始设计诸如单例模式之前,您应该先获取C++类的基础知识。同样从你的代码中,复制构造函数和赋值运算符对于单例来说是没有意义的。它应该是独一无二的。 –