GIÁO TRÌNH C++ - Trang 106

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

CTriangle

) đều có cùng các thành

viên:

width

,

height

,

set_values()

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()

CPolygon::area()

),

CPolygon::area()

sẽ được gọi cho tất cả thông qua một con trỏ tới

CPolygon

.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.