C ++单例实现

时间:2014-04-25 22:15:37

标签: c++

我正在研究c ++中Singleton Pattern的一个例子。

class Singleton
{
    private:
        static Singleton oneandonly;
        Singleton(){};
        ~Singleton(){};
        Singleton(const Singleton &);
        Singleton & operator= (const Singleton &);
    public:
        static Singleton &getInstance(){ return oneandonly; };
}

我不明白以下几行。

Singleton(const Singleton &);

我总是使用const作为方法,但现在用于方法的形式参数,并且'&'确实有任何特殊含义或只是一个奇怪的名字。 然后是这条线: static Singleton &getInstance(){ return oneandonly; }; 为什么会有一个&在方法面前?

4 个答案:

答案 0 :(得分:0)

它声明复制构造函数为private,因此无法复制该对象。请参阅:What's the use of the private copy constructor in c++

答案 1 :(得分:0)

你需要买一本关于c ++的书。

C和C ++是两种不同的语言,碰巧共享13个关键字。

'&'意味着参考'。有点像指针,但更具限制性。

答案 2 :(得分:0)

该行是copy constructor,当您将对象分配给同一类型的另一个对象时,会调用该行。由于在这种情况下它被声明为私有,这意味着不会在类外部调用复制构造函数。嗯,这就是单身人士的观点,不是吗?

'&'另一方面被称为参考。您的复制构造函数将Singleton引用作为参数。请参阅this question以了解如何使用参考运算符。

我建议您阅读一本C ++书籍,以便更深入地理解参考和类。

答案 3 :(得分:0)

在参数中,const表示该方法承诺不会更改此对象。 &表示它是一个参考。