你好:
让我来解决你的困惑吧
(1)如何是实现了多态?
1.基类函数必须有虚函数声明
2.父类和子类的函数必须是完全一样的,包括返回值,函数名和参数个数和类型
(2)什么是函数覆盖?什么是函数隐藏?
覆盖:有三个条件,第一即基类函数有虚函数声明,第二即两个函数必须分别在子类和基类中,第三即父类和子类的函数是完全一样的,所以满足了函数的覆盖它必然实现了多态。
隐藏:有两种情况,第一中情况它满足覆盖的后两中条件,但是基类没有虚函数声明,那么它也是隐藏而不是覆盖。第二情况它不满足父类和子类的函数完全一样,就向你提的第一个问题中,返回值不一样,它就不是覆盖而只是隐藏,所以它不能实现多态。
(3)c++是强转换的语言,你的父类和子类对象的指针肯定是不一样的,所以也就是说你提的第二个问题,也只是实现了函数的隐藏而已,所以它实现不了多态
好累啊;希望我说明白了。
祝你好运!
引用和指针是c 面向对象的方法,返回值不同的虚函数只在继承体系内才可以并且必定是父类为父类的指针或引用,子类为子类的指针或引用,而这正是c 的多态的一种实现方法。其他地方是不可以参数相同,返回值不同的,有人说不可以这样的话,别信!如果编译器不支持那就改为都返@父类的指针或引用好了,不然换个编译器吧!别