基类和派生类有同名函数时,无论参数个数相同或不同,子类对象直接调用的总是派生类的那个同名函数,如果要调用基类的同名函数,需要借助基类指针或者引用。如果现在想实现用同一个调用形式,既可以调用派生类的函数实现版本,也可以调用基类的实现版本,则要借助虚函数
但是,老师说只有函数原型完全相同的才能声明为虚函数啊,那么对于形参个数或者类型不同的同名函数,如何实现上面的功能呢?
基类和派生类有同名函数时,无论参数个数相同或不同,子类对象直接调用的总是派生类的那个同名函数,如果要调用基类的同名函数,需要借助基类指针或者引用。如果现在想实现用同一个调用形式,既可以调用派生类的函数实现版本,也可以调用基类的实现版本,则要借助虚函数
但是,老师说只有函数原型完全相同的才能声明为虚函数啊,那么对于形参个数或者类型不同的同名函数,如何实现上面的功能呢?
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
你可以这样定义然后在子类里按需要重新定义:
这个问题的根本在于C++如何找到函数,它必须知道函数的名字和参数,所以你必须把这两样都定义清楚了,返回值倒是可以模糊一些,比如copy函数在子类里可以返回子类。