2015-04-20 8 views
19

stieß ich auf ein Stück Code, der so aussah:„Klasse“ Keyword auf Return Typ - C++

class SomeClass* GetSomeClass() 
{ 
    return _instanceOfSomeClass; 
} 

Was bedeutet die „Klasse“ Schlüsselwort auf dem Rückgabetyp tun? Ich kann nirgends finden, was erklärt, was es ist. Gibt es nur an, dass es über SomeClass als Klasse spricht, falls es eine Art von Zweideutigkeit oder etwas gibt? Ich bin verwirrt.

+1

Dies ist _very_ fast http://Stackoverflow.com/q/29580288/560648 –

Antwort

20

class SomeClass ist ein Langschrift Weg zum Klassentyp des Verweises SomeClass (technisch, es ist das ausgefeiltes Typspezifizierer). Normalerweise ist das Hinzufügen von class redundant und die beiden sind äquivalent. Manchmal ist es jedoch notwendig, die Mehrdeutigkeit aufzulösen, wenn es eine Variable oder Funktion mit demselben Namen gibt.

9

Es ist eine Vorwärtsdeklaration. Es erlaubt Ihnen, einfach zu sagen: "Es gibt irgendwo in meinem Programm eine Klasse SomeClass, sie ist für diese Datei einfach nicht sichtbar, um Neukalationen zu vermeiden".

Wenn Sie diese Funktion jedoch implementieren, muss die Datei die tatsächliche Schnittstelle der Klasse SomeClass haben.

+1

Während technisch gesehen glaube ich, Sie haben ein paar Nuancen der Frage verpasst. –

13

Es wird verwendet, um zu disambiguieren.

Sagen Sie zum Beispiel, wenn Sie eine Variable mit dem gleichen Namen in dem gleichen (oder äußeren) Umfang, so etwas wie diese:

int SomeClass; //SomeClass is declared to be variable here 

class SomeClass* GetSomeClass() 
{ 
    return _instanceOfSomeClass; 
} 

Ohne das class Schlüsselwort würde die Funktionsdeklaration nicht sinnvoll, der Compiler. Das Schlüsselwort class weist den Compiler an, die Variablendeklaration zu ignorieren und nach einer Klassendeklaration zu suchen.