Hướng đối tượng - Cài đặt phép toán
Trang 1Định nghĩa : Cho một dãy hữu hạn các tập
Một tác vụ trên bộ n các phần tử
cho kết quả là một phần tử
là một ánh xạ
Trong trường hợp mọi đều bằng nhau
ta gọi tác vụ đó là một phép toán Nếu
n=1 ta có phép toán một ngôi Nếu n=2 ta
có phép toán hai ngôi.
1 2
1
, , , n n i
i
e E
1 1
i
i E
Trang 2Có thể hiện thực phép toán dưới kí pháp
operation(e1,e2,…en)
Khi đó operation() có thể được quan niệm như
một hàm (function) và có thể được khai báo trong một class
Trong trường hợp phép toán là hai ngôi có thể
hiện thực bởi kí pháp (e1 op e2) hoặc phép toán một ngôi hiện thực bởi kí pháp (op e1) thì op được gọi là một toán tử (operator) Ví dụ:
3+2 (+ là phép toán 2 ngôi)
t*x (* là phép toán 2 ngôi)
p++ (++ là phép toán 1 ngôi - viết theo
kí pháp hậu tố)
Trang 3toán trong C++
C++ có các phép toán được cài đặt sẳn như các phép toán số học dùng các toán tử +,-,*,/, v.v
Trong C++ phần lớn các toán tử sẳn có đều có thể được quá tải để thực hiện các phép toán cho các kiểu dữ liệu khác không phải là dữ liệu số
Chỉ có thể quá tải các toán tử đã tồn tại trong ngôn ngữ Không được phép dùng kí hiệu mới Không được phép định nghĩa lại các toán tử cho các kiểu dữ liệu cơ bản đã định nghĩa sẳn
Trang 4Toán tử + được quá tải cho kiểu dữ liệu string (do người dùng định nghĩa)
III Phép toán là thành viên của lớp Toán tử được quá tải bởi từ khóa operator dưới dạng một khai báo hàm theo dạng thức:
return_type operator op (parameter list);
Ví dụ: class string {
char the_string[100];
string(char *init_string);
string operator+(string second_string);
}
Ví dụ
Trang 5IV Các toán tử không thể được quá tải
viên của lớp (.*)
Trang 6Các toán tử cho phép quá tải của
C++
+ - * / = < >
+= -= *= /=
<< >> <<= >>=
== != <= >=
++ % &
^ ! | ~
&= ^= |= &&
|| %= [] ()
new delete