2017-06-15 8 views
0

私はこの種の「継承」をクラスY:プライベートで見つけることができますか?C++:型として別のクラス内のクラス?

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

これは 'private:char c_;'と同じです。それは単なるメンバー変数です。あなたは[良いC + +の本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – NathanOliver

+0

@ NathanOliverを使用することができるように聞こえるので、それはちょうど同義語ですか?クラスXのプロパティとは何も関係がありませんか? –

+0

いいえ、同義語ではありません。 'X'という型を持つ' x'というクラスメンバを宣言します。 'private:char c_; 'のように' char'型の 'c'という名前のクラスメンバーが宣言されました。 – NathanOliver

答えて

1

YXから派生していないので、これは、継承ではありません。

これは単なるカプセル化です。 X xは、のメンバ変数であり、char c_とは異なり、メンバ変数はXではありません。

+0

したがって、上記の「クラスX」とは関係ありません。 'X'型のメンバ変数は数値(' int、double')または 'char'として保存されますか? –

+0

@RyadKovach私はあなたが何を求めているのか分かりません。 –

+0

@RemyLebau 'class Y'は' class X'とは何の関係もないことを確かめてください。 –

関連する問題