2016-12-07 1 views
-3

Eine Frage nach diesem CodeC++/Unterschied zwischen diesem und statischem Klassennamen

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

Was ich durch diesen Code erreichen kann und welcher Unterschied wäre, wenn ich this zurückkehren würde.

* Diese Methode ist statisch

+0

Es gibt keine 'this' in statischen Methoden (Ich gehe davon aus dieser Methode statisch). – tkausl

+1

niemand sagte, es sei eine statische Methode. Es gibt nur eine statische Variable zurück. –

+0

Verzeihung, ich habe vergessen hinzuzufügen, diese Methode ist statisch – malocho

Antwort

2

Wenn die Methode statisch ist, wird this nicht implizit definiert, so dass die Frage nicht gilt.

Auf der anderen Seite, wenn die Methode ein nicht-statisches Mitglied ist, gibt es einen großen Unterschied.

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

hier immer die gleiche Instanz zurück, auch aus mehreren Instanzen derselben Klasse genannt: eine Singleton (Irreführende als die zurückgegebene Instanz hat nichts mit der Anrufer Instanz zu tun)

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

oben, Sie geben die aktuelle Instanz zurück (nicht von großem Interesse ...)

EDIT: vielleicht ist Ihre Frage zu der singleton design pattern wo kein Objekt kann eine gültigeerhalten 0 Objekt ohne getInstance() zu verwenden, da der Konstruktor privat ist, und in diesem Fall das Interesse ist, dass es die gleiche Instanz für jeden Anrufer zurück:

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