C ++ singleton GetInstance()返回

时间:2009-01-15 19:14:10

标签: c++ reference singleton pointers

在C ++中实现单例时,GetInstance()返回指向单例对象或引用的指针是否更好?这真的很重要吗?

4 个答案:

答案 0 :(得分:34)

我更喜欢参考。每当我想记录时,我都会使用引用而不是指针:

  • 不能为空
  • 不会改变(指向别的东西)
  • 不得删除

答案 1 :(得分:9)

我认为返回引用会更安全,但不要忘记单例对象的“复制保护”。

答案 2 :(得分:1)

除了返回之外,引用无关紧要地保证单例存在。 (如果没有,你应该抛出异常。)

由于单身人士在设计模式服装中基本上是全球性的,所以这也忽略了单身人士是邪恶的建议,因为全球人是邪恶的。

答案 3 :(得分: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/