基类中有一个虚函数,与子类中的一个函数的名称,参数,个数全同,就是返回类型不同,子类是虚函数吗?
书上说,基类与子类中的函数只有类型与参数个数完全相同,子类的函数才是虚函数,但是我不知是否包括函数的返回类型。比如基类:
virtual int fun(int,float);子类:
float fun(int,float);这种情况,子为是基类的虚函数吗?
书上说,基类与子类中的函数只有类型与参数个数完全相同,子类的函数才是虚函数,但是我不知是否包括函数的返回类型。比如基类:
virtual int fun(int,float);子类:
float fun(int,float);这种情况,子为是基类的虚函数吗?
我问的就是这个问题!
比如Base中定义函数
virtual Base*func();
而Derived中定义函数
Derived*func();
那么func就是改写了基类中的func
比如
int a(int m);
float a(int m);
那么当你这样使用的时候
double k = a(1);
这时编译器如何去判断到底是哪个函数被调用?因此,一个函数作用域,名字和参数都一致就认为是同一个函数,如果返回值不同,编译器肯定会报错。至于虚函数,如果父类有一个除了作用域,名字和参数都一致的虚函数,那么就认为子类的这个函数是虚函数。如果返回值不同,应该报错。