2017-06-15 13 views
0

könnte mir jemand diese Art von "Vererbung" erklären, die in der Klasse Y gefunden werden kann: privat? C++: Klasse innerhalb einer anderen Klasse als Typ?

class X 
{ 
    private: char c_; 
    public: X(char c) : c_(c){} 
}; 

class Y 
{ 
    private: X x_; // What is this ? 
    public: Y(X x): x_(x){} 
}; 

int main() 
{ 
    X m('a'); 
    Y *test = new Y(m); 

    delete test; 
    return 0; 
} 
+7

Es ist das gleiche wie 'private: char c_;'. Es ist nur eine Mitgliedsvariable. Klingt so, als könnte man ein [gutes C++ Buch] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – NathanOliver

+0

@NathanOliver verwenden, also ist es nur ein Synonym? Hat nichts mit Eigenschaften der Klasse X zu tun? –

+0

Nein, es ist kein Synonym. Es deklariert ein Klassenmitglied namens 'x' mit dem Typ' X'. Genau wie 'private: char c_;' deklarierte ein Klassenmitglied namens 'c' vom Typ' char'. – NathanOliver

Antwort

1

Dies ist nicht Erbe, wie Y nicht aus X leitet sich.

Dies ist nur einfach Verkapselung. X x ist nur eine Membervariable von Y, nicht anders als char c_ ist eine Membervariable von X.

+0

Also hat es nichts mit der oben genannten "Klasse X" zu tun? Elementvariable vom Typ 'X' wird als Zahl gespeichert (' int, double') oder als 'char'? –

+0

@RyadKovach Ich verstehe nicht, was Sie fragen. –

+0

@RemyLebau Willst du nur sicherstellen, dass 'Klasse Y' nichts mit' Klasse X' zu tun hat? –

Verwandte Themen