基类和派生类有同名函数时,无论参数个数相同或不同,子类对象直接调用的总是派生类的那个同名函数,如果要调用基类的同名函数,需要借助基类指针或者引用。如果现在想实现用同一个调用形式,既可以调用派生类的函数实现版本,也可以调用基类的实现版本,则要借助虚函数
但是,老师说只有函数原型完全相同的才能声明为虚函数啊,那么对于形参个数或者类型不同的同名函数,如何实现上面的功能呢?
欧阳克2017-06-10 09:50:57
你可以这样定义然后在子类里按需要重新定义:
class Base {
public:
virtual void print(int) = 0;
virtual void print(float) = 0;
};
这个问题的根本在于C++如何找到函数,它必须知道函数的名字和参数,所以你必须把这两样都定义清楚了,返回值倒是可以模糊一些,比如copy函数在子类里可以返回子类。