c/c++中的隱藏 舉個栗子
class A
{
public : void fun1(int a, int b)
{
cout<<"abcd"<<endl;
}
};
class B : public A
{
public : void fun1(int a)
{
cout<<"abcdefg"<<endl;
}
};
int main ()
{
B b;
b.fun1(3,4); //會出錯,因為子類與父類之間發生了同名函式隱藏,隱藏了父類的函式
return 0;
}
過載:首先它是發生在同一個類中,函式名字相同,返回值、函式引數可以不同
重寫:在基類和派生類中,函式形式完全一樣,函式名、返回值、引數都相同,加上virtual後是實現多型的一個條件。
隱藏:基類和派生類之間,只是函式名相同,如果用派生類的物件呼叫基類的重名函式(只是重名,函式引數可以不同,子類沒有這個函式但是父類有的,子類物件想呼叫父類的那個函式),將會發生錯誤,編譯不通過,原因是發生了函式隱藏,子類的函式隱藏了父類函式。如果想呼叫 需要使用:: 例如 b1.A::fun1(1,2,3);