Bài giảng Ngôn ngữ lập trình C/C++ (Bài giảng tuần 10) – Nguyễn Hải Châu
lượt xem 4
download
Bài giảng tuần 10 cung cấp cho người học các kiến thức về đối tượng trong C++ như con trỏ this, hàm tạo/Cấu tử (constructor), hàm hủy/Hủy tử (destructor),... Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Ngôn ngữ lập trình C/C++ (Bài giảng tuần 10) – Nguyễn Hải Châu
- Nội dung z Đối tượng trong C++ (tiếp) NGÔN NGỮ LẬP TRÌNH {Đối của phương thức C/C++ {Con trỏ this Nguyễn Hải Châu Khoa Công nghệ thông tin Trường Đại học Công nghệ (Bài giảng tuần 10) 1 2 Ví dụ: Phương thức nhapsl() Con trỏ this void DIEM::nhapsl() void DIEM::nhapsl() { { cout x >> y ; cin >> this->x >> this->y ; cout m ; cin >>this->m; } } 3 4 Ví dụ Các đối khác của phương thức z DIEM d1; void DIEM::doan_thang(DIEM d2, int mau) z d1.nhapsl() ; { z Khi đó: int mau_ht; {this = &d1; và do đó: mau_ht = getcolor(); {this → x chính là d1.x setcolor(mau); {this → y chính là d1.y line(this->x, this->y,d2.x,d2.y); {this → m chính là d1.m setcolor(mau_ht); z Tham số truyền cho đối con trỏ this chính } là địa chỉ của đối tượng đi kèm với z Xem thêm ví dụ trang 227-229 phương thức trong lời gọi phương thức 5 6 1
- Hàm tạo/Cấu tử (constructor) Ví dụ hàm tạo z Hàm tạo (hay cấu tử) là một phương thức class DIEM_DH { đặc biệt để khởi tạo đối tượng private: z Cách viết hàm tạo: int x, y, m ; {Tên của hàm tạo: Tên của hàm tạo bắt buộc public: phải trùng với tên của lớp // Hàm tạo không đối: Khởi tạo x = 0, y = 0, m = 1 {Không khai báo kiểu cho hàm tạo DlEM_DH() {Hàm tạo không có kết quả trả về { z Trong một lớp có thể có nhiều hàm tạo x = y = 0; m = 1; (trùng tên nhưng khác số lượng đối) } 7 8 Sử dụng hàm tạo trong khai báo // Hàm tạo này xây dựng bên ngoài định nghĩa lớp DIEM_DH d; // Gọi tới hàm tạo không đối. DIEM_DH(int x1, int y1, int m1 = 15) ; // Kết quả d.x = 0, d.y = 0, d.m = 1 // Các phương thức khác }; DIEM_DH u(300, 100, 5); // Gọi tới hàm tạo // Xây dựng hàm tạo bên ngoài định nghĩa lớp có đối. DIEM_DH:: DIEM_DH(int x1, int y1, int m1) ; { // Kết quả u.x = 300, u.y = 100, d.m = 5 x = x1; y = y1; m = m1; } 9 10 Sử dụng hàm tạo trong cấp phát Dùng hàm tạo biểu diễn đối tượng hằng DIEM_DH *r = new DIEM_DH ; z Tên_lớp(danh sách tham số) ; //Gọi tới hàm tạo không đối z Ví dụ: // Kết quả r → x = 0, r → y = 0, r → m = 1 DIEM_DH(234, l 23, 4) // Biểu thị một đối tượng kiểu DIEM_DH DIEM_DH *q = new DIEM_DH(40, 20, 4); // có các thuộc tính x = 234, y = 123, m = 4 // Gọi tới hàm tạo có đối // Kết quả q → x = 40, q → y = 20, q → m = 4 11 12 2
- Lớp không có hàm tạo, hàm tạo mặc định Hàm hủy/Hủy tử (destructor) z Hàm hủy là một phương thức của lớp có z Lớp không có hàm tạo: Chương trình dịch chức năng ngược với hàm tạo cung cấp một hàm tạo mặc định không z Hàm hủy được gọi trước khi giải phóng làm gì cả một đối tượng để thực hiện giải phóng bộ z Lớp có ít nhất một hàm tạo: Chương trình nhớ dịch sẽ không cung cấp hàm tạo mặc z Hàm hủy mặc định: Do chương trình dịch định, mọi câu lệnh xây dựng đối tượng tạo ra và không làm gì cả mới sẽ gọi đến hàm tạo đã có 13 14 Qui tắc viết hàm hủy Ví dụ hàm hủy z Mỗi lớp chỉ có một hàm hủy viết theo các quy class DT { tắc sau: private: {Kiểu của hàm: Hàm hủy cũng giống như hàm tạo int n; // Bac da thuc là hàm không có kiểu, không có giá trị trả về. double *a; // Tro toi vung nho... {Tên hàm: Tên của hàm hủy gồm một dấu ngã public: (đứng trước) và tên lớp: ~DT() ~Tên_lớp { {Đối: Hàm hủy không có đối this → n = 0; delete this → a; } }; 15 16 Tự đọc ở nhà: Các hàm inline Định nghĩa các phép toán cho lớp Từ trang 253 đến 257 trong giáo trình z Đối với mỗi lớp ta có thể sử dụng lại các kí hiệu phép toán thông dụng (+, -, *, …) để định nghĩa cho các phép toán của lớp z Sau khi được định nghĩa các kí hiệu này sẽ được dùng như các phép toán của lớp theo cách viết thông thường. z Cách định nghĩa này được gọi là phép chồng toán tử 17 18 3
- Cách định nghĩa phép toán cho lớp Ví dụ z Tên hàm toán tử: Gồm từ khoá operator struct PS và tên phép toán. { int a; //Tử số z Ví dụ: int b; // Mẫu số {operator+(định nghĩa chồng phép toán +) }; {operator- (định nghĩa chồng phép toán -) PS operator+(PS p1, PS p2); // p1 + p2 z Các đối của hàm toán tử: Số lượng các PS operator-(PS p1 , PS p2); // p1 - p2 đối bằng số ngôi của phép toán PS operator*(PS p1, PS p2); // p1 *p2 z Thân hàm toán tử viết như các hàm thông PS operator/(PS p1, PS p2); // p1/p2 thường 19 20 Cách dùng hàm toán tử Bài tập z Cách thứ nhất: Dùng như các hàm thông z Thiết kế lớp vector: thường {Thể hiện cấu trúc dữ liệu của vector 3 chiều z Ví dụ: {Viết các phương thức thực hiện các phép toán PS p, q, u, v ; trên vector: Cộng, trừ hai vector, nhân vector u = operator+(p, q) ; // u = p + q với một số, chuẩn hóa vector, tích vô hướng v = operator-(p, q) ; // v= p – q của hai vector 3 chiều z Cách thứ hai: Theo cách viết của C++ u = p + q; v = p – q; 21 22 4
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Ngôn ngữ lập trình Java căn bản
115 p | 351 | 104
-
Bài giảng Ngôn ngữ lập trình C++: Chương 1 - Trần Minh Châu
17 p | 250 | 54
-
Bài giảng Ngôn ngữ lập trình C# - Nguyễn Hồng Phương
409 p | 214 | 41
-
Bài giảng Ngôn ngữ lập trình ứng dụng: Phần 1 – ĐH CNTT&TT
45 p | 113 | 13
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 1: Ngôn ngữ lập trình C) - Chương 1: Ôn tập một số nội dung chính của NNLT C
31 p | 157 | 13
-
Bài giảng Ngôn ngữ lập trình bậc cao - Th.S Đoàn Thị Thu Huyền
44 p | 150 | 10
-
Bài giảng Ngôn ngữ lập trình C: Chương 1 - TS. Nguyễn Thị Hiền
12 p | 62 | 9
-
Bài giảng Ngôn ngữ lập trình - Nguyễn Văn Linh
109 p | 118 | 8
-
Bài giảng Ngôn ngữ lập trình C - Chương 1: Giới thiệu ngôn ngữ C
4 p | 104 | 8
-
Bài giảng Ngôn ngữ lập trình C và C++: Bài 1 - TS. Đỗ Đăng Khoa
53 p | 112 | 7
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ lập trình C++) - Chương 5: Các lớp nhập/xuất trong C++
19 p | 132 | 7
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ C++) - Chương 2: Giới thiệu về ngôn ngữ lập trình C++
49 p | 137 | 7
-
Bài giảng Ngôn ngữ lập trình C: Chương 1 - PhD. Nguyễn Thị Huyền
12 p | 55 | 7
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ lập trình C++) - Chương 3: Lớp và đối tượng
52 p | 112 | 5
-
Bài giảng Ngôn ngữ lập trình C và C++: Bài 4 - TS. Đỗ Đăng Khoa
40 p | 95 | 5
-
Bài giảng Ngôn ngữ lập trình C/C++ (Bài giảng tuần 1) – Nguyễn Hải Châu
7 p | 142 | 5
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ lập trình C++) - Chương 6: Mẫu (template)
27 p | 85 | 4
-
Bài giảng Ngôn ngữ lập trình: Bài 1 - Lý Anh Tuấn
30 p | 82 | 4
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