17

C++ でシングルトンを実装する場合、GetInstance() がシングルトン オブジェクトへのポインターまたは参照を返す方が良いですか? それは本当に問題ですか?

4

4 に答える 4

37

私は参照を好む。それを文書化したいときはいつでも、ポインターの代わりに参照を使用します。

  • null にすることはできません
  • 変更されません (別のものを指すため)
  • 消してはいけない
于 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 に答える