2011-02-02 7 views

答えて

4

Aのメソッドが仮想として定義されている限り、これはポインタと参照の両方に当てはまります。例えば、

class A { 
    virtual void Method() { 
    cout << "A::Method" << endl; 
    } 
}; 

class B { 
    // "virtual" is optional on the derived method although some 
    // developers add it for clarity 
    virtual void Method() { 
    cout << "B::Method" << endl; 
    } 
}; 

void Example1(A* param) { 
    param->Method(); 
} 

void Example2(A& param) { 
    param.Method(); 
} 

void main() { 
    B b; 
    Example1(&b); // Prints B::Method 
    Example2(b); // Prints B::Method 
} 
2

を参照してください。 virtualと宣言すると、親クラスとしてキャストされていても、オーバーライドされた子関数が呼び出されます。

関連する問題