。。。这个太长了,文不切题
追答函数同名叫做函数重载,这个不长了吧;
1)除了析构函数,所有重名的函数,都是重载函数。
2)派生类和基类的虚析构函数(必须派生类重新定义了析构函数),虽然不同命名,也是重载函数。
3)被派生类重载了的基类的虚函数(重新定义了的)和派生类的同名函数是重载函数。
4)没有被派生类重载了的基类的虚函数(重新定义了的)不是重载函数( 重载函数必须有多于一个的定义)。
5)类外同名函数和类的同名方法是重载函数。
6) 派生类重载基类的虚函数,一般要求参数个数和类型以及定常性(是否常函数)必须相同 ,不然会被屏蔽,并有可能产生二义性(这点非常诡异哦!千万要注意了!)。
7)函数重载是 写了代码,就决定了的!!!,
和“编译”,“运行”一点关系也没有。
你是说没有说到这一点么!!!!!!!!!!!!
C++多态性,必须通过指针和引用实现。
虽然我们认为虚函数,是运行时决定的,实际上还是编译时就决定了的。
这通常叫运行时绑定,和编译时绑定。
指针本身的类型,和所指对象类型不同,但是由于继承体系的关系,虚函数会随着指针所指对象的类型变化调用不同类型定义的虚函数;
引用和指针也差不多,这个就是C++的多态。
C++的多态一定会使用重载函数来实现。就是一种特别的重载。
和一般的重载有些区别,和重载没有区别。因为这就是一种重载。
说穿了虚函数,就是
1)必须是在继承体系内部定义,不然和多态无关。
2) 同参数重载
3)除了返回值是基类的指针,派生类的返回值可以是派生类指针外,虚函数的返回值也必须和基类一致。
这样的虚函数就实现了面向对象的多态。
PS:
C++的多态是对指针和引用来说的!直接用变量是无所谓多态的!!
必须重载虚函数(不一定会重载,编译器只会要求,纯虚函数必须重载)才能够实现多态!!!
原来虚函数一定要被重载。