C++官方参考链接:Polymorphism - C++ Tutorials (cplusplus.com)
多态
在深入本章之前,您应该对指针和类继承有一个正确的理解。如果你不确定下面任何一个表达的意思,你应该复习指定的部分:
Statement:(语句) | Explained in:(在...里面解释) |
---|---|
int A::b(int c) { } |
Classes |
a->b |
Data structures |
class A: public B {}; |
Friendship and inheritance |
指向基类的指针
类继承的一个关键特性是指向派生类的指针与指向其基类的指针是类型兼容的。多态性是利用这个简单但功能强大且通用的特性的艺术。
关于Rectangle和Triangle类的例子可以使用考虑到这个特性的指针的重写:
// pointers to base class
#include
using namespace std;
class Polygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
};
class Rectangle: public Polygon {
public:
int area()
{ return width*height; }
};
class Triangle: public Polygon {
public:
int area()
{ return width*height/2; }
};
int main () {
Rectangle rect;
Triangle trgl;
Polygon * ppoly1 = ▭
Polygon * ppoly2 = &trgl;
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
cout << rect.area() << '\n';
cout << trgl.area() << '\n';