YOMEDIA
ADSENSE
Bài 12 - Các khái niệm nâng cao về Class
68
lượt xem 6
download
lượt xem 6
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Đểmột hàm không phải thành viên truy xuất được các thành viên riêng của lớp phải khai báo bằng từ khóa friend. Cần khai báo prototype của hàm bạn trong phần public của class.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài 12 - Các khái niệm nâng cao về Class
- Bài 12 CÁC KHÁI NI M NÂNG CAO V CLASS 1/21
- Hàm friend Đ m t hàm không ph i thành viên truy xu t đư c các thành viên riêng c a l p ph i khai báo b ng t khóa friend. C n khai báo prototype c a hàm b n trong ph n public c a class. Ví d class cl { // ... public: friend void frnd(cl ob); // ... }; 2/21
- Ví d class myclass { int a, b; public: myclass(int i, int j) { a=i; b=j; } friend int sum(myclass x); // sum() is a friend of myclass }; int sum(myclass x) { return x.a + x.b; } int main() { myclass n(3, 4); cout
- Quá t i constructor Dùng hàm t o nh ng d ng khác. Đ quá t i hàm t o ch vi c khai báo d ng mà nó nh n và đ nh nghĩa m i hành đ ng liên h v i nh ng d ng này. Ví d 4/21
- #include int main() class timer{ { int seconds; timer a(10), b("20"), c(1, 10); public: a.run(); // count 10 seconds // seconds specified as a string b.run(); // count 20 seconds timer(char *t) { seconds = atoi(t); } c.run(); // count 1 minute, 10 seconds // seconds specified as integer return 0; timer(int t) { seconds = t; } } // time specified in minutes and seconds timer(int min, int sec) { seconds = min*60 + sec; } void run(); }; void timer::run() { clock_t t1; t1 = clock(); while((clock()/CLOCKS_PER_SEC - t1/CLOCKS_PER_SEC) < seconds); cout
- T khóa this M i khi m t hàm thành viên đư c g i nó đư c truy n m t con tr ch đ n đ i tư ng g i hàm. Con tr this là m t tham s không tư ng minh đ i v i t t c các hàm thành viên, vì v y trong hàm thành viên this có th đư c dùng đ tham chi u đ n đ i tư ng g i nó. class cl { int i; Bên trong f( ), câu l nh gán cho i giá tr 10: void f() { ... }; i = 10; // ... Th c ra câu l nh trên là vi t t t c a : }; this->i = 10; 6/21
- #include using namespace std; class cl { int i; public: void load_i(int val) { this->i = val; } // same as i = val int get_i() { return this->i; } // same as return i }; int main() { cl o; o.load_i(100); cout
- Quá t i toán t C++ cho phép quá t i toán t liên h v i các ki u class. Quá t i toán t cho phép đ nh nghĩa ý nghĩa c a m t toán t cho m t class đ c bi t. Ví d m t class đ nh nghĩa m t danh sách liên k t có th dùng toán t + đ thêm m t đ i tư ng vào danh sách. Quá t i m t toán t ch đơn gi n là đ nh nghĩa m t toán t m i liên h v i m t class mà không làm thay đ i ý nghĩa g c c a m t toán t . 8/21
- Đ quá t i m t toán t c n đ nh nghĩa ý nghĩa nào c a toán t liên h v i class. T o m t hàm operator, đ nh nghĩa hành vi c a toán t D ng t ng quát Ki u Tên l p::operator Toán t (Danh sách tham s ) { Hành vi liên h v i class } 9/21
- #include // Quá t i +. using namespace std; three_d three_d::operator+(three_d op2) class three_d { { int x, y, z; // 3-D coordinates three_d temp; public: temp.x = x + op2.x; //x chính là this->x three_d() { x = y = z = 0; } temp.y = y + op2.y; three_d(int i, int j, int k) {x = i; y = j; z = k; } temp.z = z + op2.z; return temp; three_d operator+(three_d op2); // op1 n } three_d operator=(three_d op2); // op1 n // Quá t i phép gán. void show() ; three_d three_d::operator=(three_d op2) }; { x = op2.x; y = op2.y; z = op2.z; return *this;//tr v i tư ng ư c tr b i this } void three_d::show() { cout
- int main() { three_d a(1, 2, 3), b(10, 10, 10), c; a.show(); b.show(); c = a + b; // c ng a v i b r c.show(); c = a + b + c; // c ng a, b và c c.show(); c = b = a; // gán liên ti p c.show(); b.show(); return 0; } 11/21
- Tính th a k C++ h tr tính th a k b ng cách cho phép m t class h p nh t v i class khác trong khai báo. Khai báo: class Tên class nh n th a k : Tên class cho th a k { Thân class nh n th a k } 12/21
- class xe { int banh; int nguoi; public: void set_banh(int num) { banh = num; } int get_banh() { return banh; } void set_ng(int num) { nguoi = num; } int get_ng() { return nguoi; } }; class xe_tai : public xe { int hanghoa; public: void set_hanghoa(int size) { hanghoa = size; } int get_hanghoa() { return hanghoa; } void show(); }; 13/21
- // Define an automoble. #include class automobile : public road_vehicle { using namespace std; enum type car_type; // Define a base class for vehicles. public: class road_vehicle { void set_type(type t) { car_type = t; } int wheels; enum type get_type() { return car_type; } int passengers; void show(); public: }; void set_wheels(int num) { wheels = num; } void truck::show() int get_wheels() { return wheels; } { void set_pass(int num) { passengers = num; } cout
- void automobile::show() int main() { { cout
- Dùng thành viên đư c b o v Ngoài private, public, thành viên c a class còn đư c khai báo là protected Dùng protected có th t o các thành viên c a class là private đ i v i class c a chúng nhưng v n đư c th a k và đư c truy xu t b i các l p nh n th a k 16/21
- int main() #include { using namespace std; derived ob; class base { ob.set(2, 3); // derived hi u và dùng protected: ob.show(); // derived hi u và dùng int i, j; // private i v i base, nhưng có th ob.setk(); // ư c truy xu t v i derived ob.showk(); public: return 0; void set(int a, int b) { i = a; j = b; } } void show() { cout
- Đa hình Đa hình là thu t ng mô t m t quá trình trong đó các hi n th c khác nhau c a hàm có th đư c truy xu t qua cùng m t tên. "M t giao ti p, Đa phương th c" Các con tr ch đ n các ki u th a k Con tr l p cơ s và con tr l p th a k đư c liên h v i nhau. 18/21
- { class B_class { B_class *p; char author[80]; B_class B_ob; public: D_class *dp; void put_author(char *s) { strcpy(author, s); } D_class D_ob; void show_author() { cout put_author("William Shakespeare"); strcpy(title, num); // M i author vào m t i tư ng thích h p } B_ob.show_author(); void show_title() { D_ob.show_author(); cout
- Hàm o: Hàm o là m t hàm đư c khai báo b ng t khóa virtual trong m t l p cơ s và đư c đ nh nghĩa l i trong m t hay nhi u l p th a k . 20/21
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn