CTriangle trgl;
CPolygon * ppoly1 = ▭
CPolygon * ppoly2 = &trgl;
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
cout << rect.area() << endl;
cout << sqre.area() << endl;
return 0;
}
20
10
Hàm
main
tạo hai con trỏ trỏ tới hai đối tượng của lớp
CPolygon
, đó là
*ppoly1
và
*ppoly2
. Chúng được gán cho địa chỉ của
rect
và
trgl
, đây là các đối
tượng thuộc lớp thừa kế từ
CPolygon
nên đó là những phép gán hợp lệ.
Sự hạn chế duy nhất khi sử dụng
*ppoly1
và
*ppoly2
thay vì
rect
và
trgl
là
cả
*ppoly1
và
*ppoly2
đều có kiểu là
CPolygon*
và vì vậy chúng ta chỉ có thể
tham chiếu đến các thành viên mà
CRectangle
và
CTriangle
được thừa kế từ
CPolygon
. Vì nguyên nhân đó chúng ta không thể gọi đến thành viên
area()
khi
dùng
*ppoly1
và
*ppoly2
.
Để các con trỏ đó có thể truy xuất đến
area()
như là một thành viên hợp lệ, cần
phải khai báo thành viên này trong lớp cơ sở chứ không chỉ trong các lớp thừa
kế.