2016-07-23 19 views
0

C++を使わずにJavaをたくさん学んだ後、私は今多くの新しい質問をしています。C++自身の子クラスと親クラスの子クラスは同じですか?

class baseClassclass childClass : public baseClass定義を考えると、のは言わせて、Javaの同等のコンテキスト内のインスタンスbaseClass bClass(); childClass cClass();は、(ただしC++で)cClass instanceof bClasstrueでしょうか?

そして、そう(今多型の)場合、機能add(baseClass &left, baseClass &right)leftおよび/またはrightとしてbaseClassの子のいずれかを期待することができるだろうか?

最後の質問は誤解を招く可能性がありますが、最初のものがまだ真であるかどうかによって異なりますので、必要に応じて後で詳しく説明します。

ありがとうございました!

+1

すべての質問に対する回答は「はい」です。 –

答えて

3

cClass instanceof bClassはtrueになりますか?

はい

は、機能の追加(基底クラス&左、基底クラス&右)左および/または右のように基底クラスの子のいずれかを期待することができるだろうか?

はい。これはupcastingと呼ばれています(階層を上に移動しているため)。これはC++のランタイムポリモーフィズムの背後にある概念です。基本クラスに存在するどんな子クラスに存在していますので、私たちが安全に、基本クラスオブジェクトへの参照を期待関数に子クラスオブジェクトへの参照を供給することができ

A 
B 

class A 
{ 
public: 
    func() 
    { 
    cout << "A"; 
    } 
}; 

class B : public A 
{ 
public: 
    func() 
    { 
    cout << "B"; 
    } 
}; 

void foo(A &obj) 
{ 
    obj.func(); 
} 

int main() 
{ 
    A a; 
    B b; 

    foo(a); 

    cout << endl; 

    foo(b); 

    return 0; 
} 

出力以下の例を考えてみましょう。

+0

美しい。真正面の答えを例にとれば、もっとはっきりとすることはできませんでした。ありがとうございました。 – joaoA

関連する問題