搜尋

首頁  >  問答  >  主體

c++ - 衍生類別中參數不同的同名函數可否宣告為虛函數

基底類別和衍生類別有同名函數時,無論參數個數相同或不同,子類別物件直接呼叫的總是衍生類別的那個同名函數,如果要呼叫基底類別的同名函數,需要藉助基類指標或引用。如果現在想實作用同一個呼叫形式,既可以呼叫衍生類別的函數實作版本,也可以呼叫基底類別的實作版本,則要藉助虛函數
但是,老師說只有函數原型完全相同的才能宣告為虛函數啊,那麼對於形參數或類型不同的同名函數,如何實現上面的函數呢?

世界只因有你世界只因有你2749 天前1316

全部回覆(1)我來回復

  • 欧阳克

    欧阳克2017-06-10 09:50:57

    你可以這樣定義然後在子類別裡按需要重新定義:

    class Base {
    public:
       virtual void print(int) = 0;
       virtual void print(float) = 0;
    };

    這個問題的根本在於C++如何找到函數,它必須知道函數的名字和參數,所以你必須把這兩樣都定義清楚了,回傳值倒是可以模糊一些,例如copy函數在子類別裡可以回傳子類別。

    回覆
    0
  • 取消回覆