c ++ /静态类名

时间:2016-12-07 21:40:37

标签: c++ static

根据此代码提出的一个问题

Cl& Cl::getInstance()
{
    static Cl instance;
    return instance;
}

我通过此代码实现了什么,如果我将返回this,那将会有什么不同。

*此方法是静态的

1 个答案:

答案 0 :(得分:2)

如果方法是静态的,则不会隐式定义this,因此该问题不适用。

另一方面,如果该方法是非静态成员,则存在巨大差异。

Cl& Cl::getInstance()
{
    static Cl instance;
    return instance;
}

这里你总是返回同一个实例,甚至从同一个类的几个实例调用:a singleton (误导为返回的实例与调用者实例无关)

Cl& Cl::getInstance()
{
    return *this;
}

以上,您将返回当前实例(不是很感兴趣...)

编辑:也许你的问题与singleton design pattern有关,其中没有对象可以在不使用Cl的情况下获得有效的getInstance()对象,因为构造函数是私有的,在这种情况下,兴趣是它为每个调用者返回相同的实例:

Cl& Cl::getInstance()   // static method
{
    static Cl instance;  // constructor is private, only can be called from here
    return instance;
}