登录

c++ - 派生类中参数不同的同名函数可否声明为虚函数

基类和派生类有同名函数时,无论参数个数相同或不同,子类对象直接调用的总是派生类的那个同名函数,如果要调用基类的同名函数,需要借助基类指针或者引用。如果现在想实现用同一个调用形式,既可以调用派生类的函数实现版本,也可以调用基类的实现版本,则要借助虚函数
但是,老师说只有函数原型完全相同的才能声明为虚函数啊,那么对于形参个数或者类型不同的同名函数,如何实现上面的功能呢?

# C++
世界只因有你世界只因有你1998 天前815 次浏览

全部回复(1) 我要回复

  • 欧阳克

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

    你可以这样定义然后在子类里按需要重新定义:

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

    这个问题的根本在于C++如何找到函数,它必须知道函数的名字和参数,所以你必须把这两样都定义清楚了,返回值倒是可以模糊一些,比如copy函数在子类里可以返回子类。

    回复
    0
  • 取消回复发送