基类中有一个虚函数,与子类中的一个函数的名称,参数,个数全同,就是返回类型不同,子类是虚函数吗?
书上说,基类与子类中的函数只有类型与参数个数完全相同,子类的函数才是虚函数,但是我不知是否包括函数的返回类型。比如基类:
virtual int fun(int,float);子类:
float fun(int,float);这种情况,子为是基类的虚函数吗?

解决方案 »

  1.   

    确认吗?这两个函数的返回类型可是不同呀,一个是int,一个是float型,
    我问的就是这个问题!
      

  2.   

    你这个不算,只有在返回值类型是指向类对象的指针或者引用时,返回值参数才可以不一样
    比如Base中定义函数
    virtual Base*func();
    而Derived中定义函数
    Derived*func();
    那么func就是改写了基类中的func
      

  3.   

    C++命名是结合了作用域,名字和参数,没有考虑返回值。
    比如
    int a(int m);
    float a(int m);
    那么当你这样使用的时候
    double k = a(1);
    这时编译器如何去判断到底是哪个函数被调用?因此,一个函数作用域,名字和参数都一致就认为是同一个函数,如果返回值不同,编译器肯定会报错。至于虚函数,如果父类有一个除了作用域,名字和参数都一致的虚函数,那么就认为子类的这个函数是虚函数。如果返回值不同,应该报错。