在 C++ 中实现单例时,GetInstance() 是返回指向单例对象的指针还是引用更好?真的有关系吗?
Marcin
问问题
10625 次
4 回答
37
我更喜欢参考。每当我想记录以下内容时,我都会使用引用而不是指针:
- 不能为空
- 它不会被改变(指向别的东西)
- 它不应该被删除
于 2009-01-15T19:17:14.710 回答
10
我认为返回引用会更安全,但不要忘记单例对象的“复制保护”。
于 2009-01-15T19:19:29.620 回答
1
除了返回引用隐式保证单例存在之外,这无关紧要。(如果没有,你应该抛出一个异常。)
这也忽略了单例是邪恶的,就像全局是邪恶的一样,因为单例基本上是设计模式服装中的全局变量。
于 2009-01-15T19:16:37.333 回答
0
getInstance() 方法返回一个引用,因为函数静态对象在控制流第一次传递其定义时被初始化。此外,使用引用更好:现在用户不能删除单例的指针。另外,这个实现非常简单!
class CKeyboard
{
public:
static CKeyboard& GetInstance()
{
static CKeyboard keyboard;
return keyboard;
}
private:
CKeyboard() {}
CKeyboard(const CKeyboard&);
CKeyboard& operator=(const CKeyboard&);
};
http://www.devartplus.com/3-simple-ways-to-create-singleton-in-c/
于 2014-12-14T21:36:52.570 回答