C++ 多态
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。
C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。
下面的实例中,基类 Shape 被派生为两个类,如下所示:
实例
#include<iostream>usingnamespacestd; classShape{ protected: intwidth, height; public: Shape(inta=0, intb=0) { width = a; height = b; } intarea() { cout << "Parent class area :" <<endl; return0; }};classRectangle: publicShape{ public: Rectangle(inta=0, intb=0):Shape(a, b){} intarea() { cout << "Rectangle class area :" <<endl; return(width * height); }};classTriangle: publicShape{ public: Triangle(inta=0, intb=0):Shape(a, b){} intarea() { cout << "Triangle class area :" <<endl; return(width * height / 2); }};// 程序的主函数intmain(){ Shape *shape; Rectanglerec(10,7); Triangle tri(10,5); // 存储矩形的地址 shape = &rec; // 调用矩形的求面积函数 area shape->area(); // 存储三角形的地址 shape = &tri; // 调用三角形的求面积函数 area shape->area(); return0;}
当上面的代码被编译和执行时,它会产生下列结果:
Parentclass area :
Parentclass area :