class A{
A& operator =(const A&){}
};
class B:A{
B& operator=(const &B){}
};
void main()
{
A a;
B b;
a=b;//正確
b=a;//錯誤
}
可以把派生類賦值給基類。我們知道賦值,是調用了類的賦值運算符。所以當派生類給基類賦值時,調用了基類的複製運算符函數,該函數的參數是基類對象的const 引用,那麼
a=b,實際就是用基類引用派生類,然後將派生類中基類部分賦值給對應的基類成員。
而b=a報錯是因爲派生類不能引用基類。
NOTE:基類可以引用或指針綁定到派生類。因爲派生類在構造的時候,會先構造基類部分,所以派生類對象中包含基類對象,那麼基類就可以通過引用或指針動態的綁定到派生類對象中的基類部分,反之則不行,因爲基類中可能沒有派生類自定義的成員。