Giáo trình C++_hàm bạn, định nghĩa phép toán cho lớp
Số trang: 17
Loại file: pdf
Dung lượng: 244.03 KB
Lượt xem: 13
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tham khảo tài liệu giáo trình c++_hàm bạn, định nghĩa phép toán cho lớp, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Giáo trình C++_hàm bạn, định nghĩa phép toán cho lớpChương 8. Hàm bạn, đ ịnh nghĩa phép toán cho lớp CHƯƠNG 8 HÀM BẠN, ĐỊNH NGHĨA PHÉP TOÁN CHO LỚP Hàm b ạn Định nghĩa phép toán cho lớpI. HÀM BẠN (FRIEND FUNCTION) 1. Hàm bạn Để một hàm trở thành bạn của một lớp, có 2 cách viết: Cách 1: Dùng từ khóa friend để khai báo hàm trong lớp và xây d ựng hàm bênn goài như các hàm thông thường (không dùng từ khóa friend). Mẫu viết như sau: c lass A { private: // Khai báo các thuộc tính public: ... // Khai báo các hàm bạn của lớp A friend void f1(...); friend double f2(...); friend A f3(...) ; ... }; // Xây dựng các hàm f1, f2, f3 v oid f1(...) { ... } double f2(...) {258Chương 8. Hàm bạn, định nghĩa phép toán cho lớp ... } A f3(...) { ... } Cách 2: Dùng từ khóa friend để xây dựng hàm trong đ ịnh nghĩa lớp. Mẫu viếtnhư sau: class A { private: // Khai báo các thuộc tính public: // Xây dựng các hàm bạn của lớp A v oid f1(...) { ... } double f2(...) { ... } A f3(...) { ... } ... }; 2. Tính chất của hàm bạn Trong thân hàm bạn của một lớp có thể truy nhập tới các thuộc tính của cácđối tượng thuộc lớp này. Đây là sự khác nhau duy nhất giữa hàm b ạn và hàm thôngthường. Chú ý rằng hàm b ạn không phải là phương thức của lớp. Phương thức có một 259Chương 8. Hàm bạn, đ ịnh nghĩa phép toán cho lớpđối ẩn (ứng với con trỏ this) và lời gọi của phương thức phải gắn với một đối tượngn ào đó (đ ịa chỉ đối tượng này được truyền cho con trỏ this). Lời gọi của hàm b ạngiống như lời gọi của hàm thông thường. Ví d ụ sau sẽ so sánh ph ương th ức, hàm bạn và hàm thông thường. Xét lớp SP (số phức), hãy so sánh 3 phương án để thực hiện việc cộng 2 sốphức: Phương án 1 : Dùng phương thức c lass SP { private: double a; // phần thực double b; // Phần ảo public: SP c ong(SP u2) { SP u: u.a = this a + u2.a ; u.b = this b + u2.b ; return u; } }; Cách dùng: SP u, u1, u2; u = u1.cong(u2); Phương án 2 : Dùng hàm bạn c lass SP { private: double a; // Phần thực double b; // Phần ảo public: friend SP cong(SP u1 , SP u2)260Chương 8. Hàm bạn, định nghĩa phép toán cho lớp { SP u: u.a = u1.a + u2.a ; u.b = u1.b + u2.b ; return u; } }; Cách dùng SP u, u1, u2; u = c ong(u1, u2); Phương án 3: Dùng hàm thông thường class SP { private: double a; // phần thực double b; // Phần ảo public: ... }; SP cong(SP u1, SP u2) { SP u: u.a = u1.a + u2.a ; u.b = u1.b + u2.b ; return u; } Phương án này không được chấp nhận, trình biên d ịch sẽ báo lỗi trong thânhàm không được quyền truy xuất đến các thuộc tính riêng (private) a, b của các đốitượng u, u1 và u2 thuộc lớp SP. 3. Hàm bạn của nhiều lớp Khi một h àm là bạn của nhiều lớp, thì nó có quyền truy nhập tới tất cả cácthuộc tính của các đối tư ợng trong các lớp này. 261Chương 8. Hàm bạn, đ ịnh nghĩa phép toán cho lớpĐể làm cho hàm f trở thành bạn của các lớp A, B và C ta sử dụng mẫu viết như sau: // Khai báo trước lớp A c lass A; // Khai báo trước lớp B c lass B; // Khai báo trước lớp C c lass C; // Định nghĩa lớp A c lass A { // Khai báo f là bạn của A friend void f(...) ; }; // Định nghĩa lớp B c lass B { // Khai báo f là bạn của B friend void f(...) ; }; // Định nghĩa lớp C c lass C { // Khai báo f là bạn của C friend void f(...) ; }; // Xây dụng hàm f v oid f(...) { ... } Chương trình sau đ ây minh họa cách dùng hàm bạn (bạn của một lớp và b ạncủa nhiều lớp). Chương trình đ ưa vào 2 lớp VT (véc tơ), MT (ma trận) và 3 hàmb ạn để thực hiện các thao tác trên 2 lớp này: // Hàm bạn với lớp VT dùng để in một véc tơ ...
Nội dung trích xuất từ tài liệu:
Giáo trình C++_hàm bạn, định nghĩa phép toán cho lớpChương 8. Hàm bạn, đ ịnh nghĩa phép toán cho lớp CHƯƠNG 8 HÀM BẠN, ĐỊNH NGHĨA PHÉP TOÁN CHO LỚP Hàm b ạn Định nghĩa phép toán cho lớpI. HÀM BẠN (FRIEND FUNCTION) 1. Hàm bạn Để một hàm trở thành bạn của một lớp, có 2 cách viết: Cách 1: Dùng từ khóa friend để khai báo hàm trong lớp và xây d ựng hàm bênn goài như các hàm thông thường (không dùng từ khóa friend). Mẫu viết như sau: c lass A { private: // Khai báo các thuộc tính public: ... // Khai báo các hàm bạn của lớp A friend void f1(...); friend double f2(...); friend A f3(...) ; ... }; // Xây dựng các hàm f1, f2, f3 v oid f1(...) { ... } double f2(...) {258Chương 8. Hàm bạn, định nghĩa phép toán cho lớp ... } A f3(...) { ... } Cách 2: Dùng từ khóa friend để xây dựng hàm trong đ ịnh nghĩa lớp. Mẫu viếtnhư sau: class A { private: // Khai báo các thuộc tính public: // Xây dựng các hàm bạn của lớp A v oid f1(...) { ... } double f2(...) { ... } A f3(...) { ... } ... }; 2. Tính chất của hàm bạn Trong thân hàm bạn của một lớp có thể truy nhập tới các thuộc tính của cácđối tượng thuộc lớp này. Đây là sự khác nhau duy nhất giữa hàm b ạn và hàm thôngthường. Chú ý rằng hàm b ạn không phải là phương thức của lớp. Phương thức có một 259Chương 8. Hàm bạn, đ ịnh nghĩa phép toán cho lớpđối ẩn (ứng với con trỏ this) và lời gọi của phương thức phải gắn với một đối tượngn ào đó (đ ịa chỉ đối tượng này được truyền cho con trỏ this). Lời gọi của hàm b ạngiống như lời gọi của hàm thông thường. Ví d ụ sau sẽ so sánh ph ương th ức, hàm bạn và hàm thông thường. Xét lớp SP (số phức), hãy so sánh 3 phương án để thực hiện việc cộng 2 sốphức: Phương án 1 : Dùng phương thức c lass SP { private: double a; // phần thực double b; // Phần ảo public: SP c ong(SP u2) { SP u: u.a = this a + u2.a ; u.b = this b + u2.b ; return u; } }; Cách dùng: SP u, u1, u2; u = u1.cong(u2); Phương án 2 : Dùng hàm bạn c lass SP { private: double a; // Phần thực double b; // Phần ảo public: friend SP cong(SP u1 , SP u2)260Chương 8. Hàm bạn, định nghĩa phép toán cho lớp { SP u: u.a = u1.a + u2.a ; u.b = u1.b + u2.b ; return u; } }; Cách dùng SP u, u1, u2; u = c ong(u1, u2); Phương án 3: Dùng hàm thông thường class SP { private: double a; // phần thực double b; // Phần ảo public: ... }; SP cong(SP u1, SP u2) { SP u: u.a = u1.a + u2.a ; u.b = u1.b + u2.b ; return u; } Phương án này không được chấp nhận, trình biên d ịch sẽ báo lỗi trong thânhàm không được quyền truy xuất đến các thuộc tính riêng (private) a, b của các đốitượng u, u1 và u2 thuộc lớp SP. 3. Hàm bạn của nhiều lớp Khi một h àm là bạn của nhiều lớp, thì nó có quyền truy nhập tới tất cả cácthuộc tính của các đối tư ợng trong các lớp này. 261Chương 8. Hàm bạn, đ ịnh nghĩa phép toán cho lớpĐể làm cho hàm f trở thành bạn của các lớp A, B và C ta sử dụng mẫu viết như sau: // Khai báo trước lớp A c lass A; // Khai báo trước lớp B c lass B; // Khai báo trước lớp C c lass C; // Định nghĩa lớp A c lass A { // Khai báo f là bạn của A friend void f(...) ; }; // Định nghĩa lớp B c lass B { // Khai báo f là bạn của B friend void f(...) ; }; // Định nghĩa lớp C c lass C { // Khai báo f là bạn của C friend void f(...) ; }; // Xây dụng hàm f v oid f(...) { ... } Chương trình sau đ ây minh họa cách dùng hàm bạn (bạn của một lớp và b ạncủa nhiều lớp). Chương trình đ ưa vào 2 lớp VT (véc tơ), MT (ma trận) và 3 hàmb ạn để thực hiện các thao tác trên 2 lớp này: // Hàm bạn với lớp VT dùng để in một véc tơ ...
Tìm kiếm theo từ khóa liên quan:
kỹ thuật lập trình giáo trình C++ giáo trình môn lập trình tài liệu học lập trình bài giảng môn lập trìnhGợi ý tài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 260 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 202 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 192 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 161 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 152 0 0 -
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 117 0 0 -
Giáo trình về phân tích thiết kế hệ thống thông tin
113 trang 114 0 0 -
LUẬN VĂN: Tìm hiểu kỹ thuật tạo bóng cứng trong đồ họa 3D
41 trang 107 0 0 -
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 trang 105 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 2
184 trang 86 0 0