學習C++些許時間了,隨便寫點東西吧。 重載/覆蓋/隱藏
1.重載
相同作用域,函數名相同,參數不同,Virtual關鍵字可有可無。
2.覆蓋
不同作用域,函數名相同,參數相同,有Virtual關鍵字。
3.隱藏
一般是父類和子類之間,函數名相同,參數不同時,不管有沒有virtual關鍵字都會導致隱藏。
函數名相同,參數相同,基類沒有virtual關鍵字的時候也發生隱藏。
例如
class Base
{
public:
void fun(int nIndex);
}
class Child: public Base
{
public:
void fun(int nIndex, int input);
}
int main(int argc, char * argv[])
{
Child objChild;
objChild.fun(0); //編譯的時候就會報錯,因爲發生了隱藏
return 0;
}
還有一個C++中子類父類同名函數的調用的規律總結:
如果是非虛函數,與調用指針關聯。
如果是虛函數,與指針所指對象關聯。