重載/覆蓋/隱藏

學習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++中子類父類同名函數的調用的規律總結:

如果是非虛函數,與調用指針關聯。

如果是虛函數,與指針所指對象關聯。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章