一 、普通賦值 (同名隱藏)
子類對象調用和父類相同的函數名,該父類的函數名會被隱藏,只會調用子類的函數。
Class A
{
public:
void show();
void show(int);
}
Class B : public A
{
public :
void show();
void printf();
}
int main()
{
B b;
b.show();
a.show(); //這時候子類已經隱藏父類的方法,父類不能在調用自己的函數
a.show(0) //同上
}
父類的引用或指針被子類對象的對象或地址賦值后,它會調用父類自己相應的方法
二、子類對象地址給父類指針賦值
通過子類的對象的地址給父類的指針賦值----->父類指針只能調用子類中從父類繼承的函數或者變量
int main()
{
A * a ;
B b;
a = &b;
a->show();
a->printf(); //這個是錯誤的調用,不能調用子類的函數方法
}
三 、子類對象給父類的引用賦值
父類的引用只能訪問由子類繼承父類的函數或者變量
int main()
{
A &a;
B b;
a = b;
a.show();
a.list(); //這個引用是錯誤的
}