CRectangle rect;
CTriangle trgl;
CPolygon poly;
CPolygon * ppoly1 = ▭
CPolygon * ppoly2 = &trgl;
CPolygon * ppoly3 = &poly;
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
ppoly3->set_values (4,5);
cout << ppoly1->area() << endl;
cout << ppoly2->area() << endl;
cout << ppoly3->area() << endl;
return 0;
}
20
10
0
Bây giờ cả ba lớp (
CPolygon
,
CRectangle
và
CTriangle
) đều có cùng các thành
viên:
width
,
height
,
set_values()
và
area()
.
area()
được định nghĩa là
virtual
vì nó sẽ được định nghĩa lại trong các lớp
thừa kế. Bạn có thể kiểm tra lại rằng nếu bạn bỏ từ khoá đó và thực hiện
chương trình thì kết quả sẽ là
0
cho cả 3 đa giác thay vì
20,10,0
. Nguyên nhân
là do thay vì gọi hàm
area()
tương ứng với mỗi đối tượng
(
CRectangle::area()
,
CTriangle::area()
và
CPolygon::area()
),
CPolygon::area()
sẽ được gọi cho tất cả thông qua một con trỏ tới
CPolygon
.