Bài giảng Lập trình hướng đối tượng - Chương 2: Hàm dựng và Hàm hủy (Phần 3) - Hồ Tuấn Thanh
Toán tử
2
Các toán tử thường gặp
• Gán bằng: a=b;
• Cộng, trừ, nhân, chia: c=a+b; d=a%b;
• So sánh: a==b; c<=a;
• +=, -=, *=, /=: a+=b;
• ++, --: a++; ++a; b--; --b;
• Nhập, xuất: cin>>a; cout<<b;
• Ép kiểu float x=10.7; int n=(int)x;
• []: int x=a[i];
3
Định nghĩa lại toán tử
• Các lớp tự định nghĩa: chưa có sẵn các toán tử
• Muốn sử dụng toán tử: phải tự cài đặt toán tử
• Cài đặt 1 toán tử được gọi là định nghĩa lại toán tử
đó (operator overloading)
• Về bản chất, operator cũng là một hàm.
• VD: c=a+b tương đương với c=a.operator+(b);
• VD: c+=b tương đương với c.operator+=(b);
• Như vậy, đến lúc này, chúng ta đã cài đặt 4 loại
hàm: hàm dựng, hàm hủy, hàm toán tử và các
hàm khác.
.
4
Các toán tử có thể overload
5
Qui tắc bất thành văn
• Chỉ cài đặt các toán tử có ý nghĩa với lớp.
• Tránh thay đổi ý nghĩa nguyên thủy của toán tử
đó.
• Các cặp toán tử có cùng chức năng, ví dụ
x=x+y và x+=y phải được viết cùng nhau và có
cùng chức năng.
6
=
7
Toán tử gán bằng
Lưu ý
• Toán tử gán bằng được gọi khi thực hiện gán
bằng giữa 2 biến (b=a)
• Cài đặt gần giống hàm dựng sao chép
• Thêm kiểm tra this==&p để tránh trường hợp
gán a=a
• Kiểu trả về TenLop& (VD: PhanSo&) và nhớ
return *this
9
+, -, *, /
10
Toán tử +
11
Lưu ý
• Không có dấu & ở kiểu trả về
• Tham số: vế phải toán tử
• Không cộng dồn vào đối tượng gọi toán tử
(this)
12
<, <=, ==, !=, >=, >
13
Toán tử ==
Lưu ý
• Trả về kiểu int (1, 0) hoặc bool (true, false)
• Tham số: vế phải toán tử
15
+=, -=, *=, /=
16
Toán tử +=
17
Lưu ý
• Trả về có dấu &
• PhanSo hoặc void: SAI
• Tham số: vế phải toán tử
• Cộng/trừ/nhân/chia dồn vào this
• Nhớ có return *this
18
>>, <<
19
To
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 2: Hàm dựng và Hàm hủy (Phần 3) - Hồ Tuấn Thanh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_lap_trinh_huong_doi_tuong_chuong_2_ham_dung_va_ham.pdf
L04P02-MyArray.cpp
MyArray.cpp
MyArray.h

