Danh mục

Kỹ thuật lập trình hướng đối tư - Chapter 4

Số trang: 32      Loại file: pdf      Dung lượng: 54.85 KB      Lượt xem: 19      Lượt tải: 0    
Hoai.2512

Phí tải xuống: 17,000 VND Tải xuống file đầy đủ (32 trang) 0
Xem trước 4 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Quá tải hàm• Quá tải hàm tạo • Hàm tạo bản sao • Hàm với các đối số mặc định • Tính không xác định khi quá tải hàm • Điạ chỉ của hàm quá tải
Nội dung trích xuất từ tài liệu:
Kỹ thuật lập trình hướng đối tư - Chapter 4Chöông 4 Quaù taûi haøm • Quaù taûi haøm taïo • Haøm taïo baûn sao • Haøm vôùi caùc ñoái soá maëc ñònh • Tính khoâng xaùc ñònh khi quaù taûi haøm • Ñiaï chæ cuûa haøm quaù taûiChöông 4 Quaù taûi haøm 104104Chöông 4 Quaù taûi haøm 105I/ Quaù taûi haøm taïo (constructor overloading )Coù theå quaù taûi haøm taïo cuûa moät lôùp, nhöng khoâng quaù taûi haøm huûy.Haøm taïo cuûa lôùp phaûi phuø hôïp vôùi caùch maø ñoái töôïng cuûa lôùp ñoù ñöôïc khai baùo. Neáukhoâng loãi thôøi gian bieân dòch seõ xaûy ra.Coù 3 lyù do caàn quaù taûi haøm taïo : + ñeå coù tính linh hoaït + ñeå hoå trôï maûng + ñeå taïo caùc haøm taïo baûn saoHaïn cheá : neáu thöïc hieän quaù taûi nhieàu laàn coù theå taïo ra taùc duïng huûy hoaïi treân lôùp. • Quaù taûi haøm taïo vôùi khôûi ñaàu moät ñoái töôïng hoaëc khoâng khôûi ñaàu ñoái töôïngVí duï 1.1#include class myclass { int x;public: // overload constructor two ways myclass() { x = 0; } // no initializer myclass(int n) { x = n; } // initializer int getx() { return x; }};int main(){ myclass o1(10); // declare with initial value myclass o2; // declare without initializer cout Chöông 4 Quaù taûi haøm 106 • Quaù taûi haøm taïo ñeå cho caùc ñoái töôïng rieâng leõ laãn caùc maûng ñoái töôïng xaûy ra trong chöông trình.Ví duï 1.2#include class myclass { int x;public: // overload constructor two ways myclass() { x = 0; } // no initializer myclass(int n) { x = n; } // initializer int getx() { return x; }};int main(){ myclass o1[10]; // declare array without initializers myclass o2[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // declare with initializers int i; for(i=0; iChöông 4 Quaù taûi haøm 107Ví duï 1.3#include #include // included for sscanf()class date { int day, month, year;public: date(char *str); date (int m, int d, int y) { day = d; month = m; year = y; } void show() { cout Chöông 4 Quaù taûi haøm 108 • Quaù taûi haøm taïo khi maûng ñoäng cuûa lôùp ñöôïc caáp phaùt. Ñieàu naøy giuùp giaûi quyeát haïn cheá trong chöông 3, phaàn IV/2, moät maûng ñoäng khoâng theå ñöôïc khôûi ñaàu, xem ví duï 4.6.Ví duï 1.4#include class myclass { int x;public: // overload constructor two ways myclass() { x = 0; } // no initializer myclass(int n) { x = n; } // initializer int getx() { return x; } void setx(int n) { x = n; }};int main(){ myclass *p; myclass ob(10); // initialize single variable p = new myclass[10]; // cant use initializers here if(!p) { cout Chöông 4 Quaù taûi haøm 109 return 0;}Baøi taäp I1. Cho lôùp sau, haõy boå sung hai haøm taïo. Haøm taïo thöù nhaát khoâng nhaän tham soá,haøm naøy duøng toaùn töû new caáp phaùt 255 bytes boä nhôù, khôûi ñaàu boä nhôù nhö moätchuoãi roãng vaø cho len = 255. Haøm taïo thöù hai nhaän hai tham soá, tham soá thöù nhaát laøchuoãi duøng ñeå khôûi ñaàu vaø tham soá kia laø soá byte ñeå caáp phaùt. Cho phieân baûn naøycaáp phaùt löôïng boä nhôù ñaõ ñöôïc chæ roõ vaø cheùp chuoåi vaøo boä nhôù.Thöïc hieän vieäc kieåm tra giôùi haïn bieân caàn thieát vaø chöùng toû caùc haøm taïo seõ hoaïtñoäng qua moät chöông trình ngaén.class strtype { char *p; int len;public: char *getstring() { return p; } int getlength() { return len; }};2. Töø baøi taäp II, 2 chöông 2, boå sung haøm taïo khoâng nhaän tham soá vaø moät phieân baûnñöôïc quaù taûi ñeå nhaän giôø heä thoáng döôùi daïng ñöôïc traû veà bôûi haøm chuaån clock().II/ Taïo vaø söû duïng haøm taïo baûn sao (copy constructor)1/ Khaùi nieäm Haøm taïo baûn sao laø kieåu ñaëc bieät cuûa haøm taïo ñöôïc quaù taûi.Khi moät ñoái töôïng ñöôïc truyeàn cho moät haøm, baûn sao töøng bit moät cuûa ñoái töôïng ñoùñöôïc taïo ra vaø ñöôïc truyeàn cho tham soá cuûa haøm ñeå nhaän ñoái töôïng. 109Chöông 4 Quaù taûi haøm 110Tuy nhieân, coù nhöõng tröôøng hôïp trong ñoù baûn sao ñoàng nhaát laø nhö khoâng mongmuoán.Chaúng haïn, neáu ñoái töôïng coù con troû tôùi boä nhôù ñöôïc caáp phaùt, thì baûn sao seõ troû tôùicuøng boä nhôù nhö ñoái töôïng goác ñaõ laøm. Do ñoù, neáu baûn sao taïo ra söï thay ñoåi cho noäidung boä nhôù thì noù cuõng seõ ñöôïc thay ñoåi ñoái v ...

Tài liệu được xem nhiều: