84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
基底類別和衍生類別有同名函數時,無論參數個數相同或不同,子類別物件直接呼叫的總是衍生類別的那個同名函數,如果要呼叫基底類別的同名函數,需要藉助基類指標或引用。如果現在想實作用同一個呼叫形式,既可以呼叫衍生類別的函數實作版本,也可以呼叫基底類別的實作版本,則要藉助虛函數但是,老師說只有函數原型完全相同的才能宣告為虛函數啊,那麼對於形參數或類型不同的同名函數,如何實現上面的函數呢?
你可以這樣定義然後在子類別裡按需要重新定義:
class Base { public: virtual void print(int) = 0; virtual void print(float) = 0; };
這個問題的根本在於C++如何找到函數,它必須知道函數的名字和參數,所以你必須把這兩樣都定義清楚了,回傳值倒是可以模糊一些,例如copy函數在子類別裡可以回傳子類別。
你可以這樣定義然後在子類別裡按需要重新定義:
這個問題的根本在於C++如何找到函數,它必須知道函數的名字和參數,所以你必須把這兩樣都定義清楚了,回傳值倒是可以模糊一些,例如copy函數在子類別裡可以回傳子類別。