17

在 C++ 中实现单例时,GetInstance() 是返回指向单例对象的指针还是引用更好?真的有关系吗?

4

4 回答 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 回答