Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Tính đa hình
Nội dung xem thử
Mô tả chi tiết
Chöông 9
Tính ña hình
• Con troû vaø Lôùp daãn xuaát
• Daãn nhaäp caùc haøm aûo
• Caùc haøm aûo thuaàn tuùy
• AÙp duïng ña hình
Chöông 9 Tính ña hình 270
I/ Con troû vaø Lôùp daãn xuaát
1/ Khaùi nieäm
Tính ña hình (polymorphism) ñöôïc hoå trôï baèng hai caùch khaùc nhau trong C++ .
Caùch 1, ña hình ñöôïc hoå trôï khi bieân dòch chöông trình (compiler) thoâng qua vieäc quaù
taûi caùc haøm vaø toaùn töû.
Caùch 2, ña hình ñöôïc hoå trôï ôû thôøi ñieåm thöïc thi chöông trình (run-time) thoâng qua
caùc haøm aûo. Caùch naøy giuùp laäp trình vieân linh ñoäng hôn.
• Cô sôû cuûa haøm aûo vaø ña hình khi thöïc thi chöông trình laø caùc con troû cuûa lôùp
daãn xuaát.
Chöông 3 coù khaûo saùt veà con troû, moät ñaëc tính môùi cuûa con troû seõ ñöôïc khaûo saùt
trong chöông naøy. Neáu p laø moät con troû tôùi lôùp cô sôû, thì coù theå söû duïng p ñeå troû tôùi
baát kyø lôùp naøo ñöôïc suy ra töø lôùp cô sôû.
Chaúng haïn, coù hai lôùp cô sôû base vaø lôùp daãn xuaát derived keá thöøa base, caùc phaùt bieåu
sau ñeàu ñuùng
base *p; // base class pointer
base base_ob; // object of type base
derived derived_ob; // object of type derived
// p can, of course, point to base objects
p = &base_ob; // p points to base object
// p can also point to derived objects without error
p = &derived_ob; // p points to derived object
Moät con troû cuûa lôùp cô sôû coù theå troû tôùi baát kyø lôùp daãn xuaát naøo cuûa lôùp cô sôû maø
khoâng gaây ra baùo loãi khaùc kieåu. Song chæ coù theå truy caäp ñöôïc caùc thaønh phaàn maø lôùp
daãn xuaát ñöôïc keá thöøa töø lôùp cô sôû. Bôûi vì con troû cuûa lôùp cô sôû chæ bieát lôùp cô sôû maø
thoâi, noù khoâng bieát gì nhöõng thaønh phaàn ñöôïc theâm vaøo bôûi lôùp daãn xuaát.