gpt4 book ai didi

构造函数的 C++ 简单单例实现返回语句

转载 作者:行者123 更新时间:2023-11-28 02:01:50 25 4
gpt4 key购买 nike

我正在尝试用 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)

构造函数应该返回类的对象。在上面的示例中,两个构造函数都没有 return 语句。然而,这似乎是标准的傻瓜实现。这是为什么?

最佳答案

如果你使用单例,请使用 Meyers 的单例:

class Singleton
{
private:
Singleton() = default; // Adapt here
~Singleton() = default; // Adapt here
Singleton(const simpleSingleton& rs) = delete;
Singleton& operator = (const simpleSingleton&) = delete;
public:
Singleton& GetInstance()
{
static Singleton instance;
return instance;
}
};

关于构造函数的 C++ 简单单例实现返回语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39135980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com