Danh mục

Bài 12 - Các khái niệm nâng cao về Class

Số trang: 21      Loại file: pdf      Dung lượng: 113.98 KB      Lượt xem: 10      Lượt tải: 0    
Jamona

Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Để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.
Nội dung trích xuất từ tài liệu:
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 CLASS1/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í d4/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 secondstimer(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 secondstimer(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) 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->xthree_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 s ...

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