多态性(polymorphism):不同功能函数用同一函数名,而且可以用一个函数名调用不同内容的函数。
面向对象时一般这样描述--向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为。
分类:静态多态性(编译时的多态性,通过函数重载实现的)
动态多态性(运行时的多态性,通过虚函数)。//虚继承是对于数据成员的,而虚函数则是对于内部函数的。
问题:如何通过虚函数实现动态多态性。
当一个基类被继承为不同的派生类时,各派生类可以使用与基类成员相同的成员名,如果在运行时用同一个成员名调用类对象的成员,调用哪个对象的成员。
//VC对friend友元函数不好使,因此通常需要用C重新写<iostream.h>
派生类对象可以代替基类对象小基类对象的引用初始化或赋值。
虚函数:在基类中声明函数是虚拟的,并不是实际存在的函数,然后在派生类中才正式定义此函数,就是在函数前面加virtual。
同名覆盖:1.cy1.area() cy1.Circle::area()
2.用指针方法:Pinot *p=&基类对象名;//基类类型的指针
p->display();//基类中的display()
p=&派生类的对象名;
p->display();如果用虚函数的话,该处为派生类的display(),否则为基类的display()。