Tải bản đầy đủ (.ppt) (6 trang)

Hướng đối tượng - Cài đặt phép toán

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.04 MB, 6 trang )





Cài đặt phép toán
I. Phép toán là hàm
I. Phép toán là hàm
Đị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
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
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


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.
có phép toán hai ngôi.
{ }
1.. , 1
i
i n n
E
= +
( )
1 2
1
, ,...,
n
n i
i
e e e E
=


1 1n n
e E
+ +

1
1
:
n
i n
i

F E E
+
=
− − − − →

i
E




Cài đặt phép toán
Có 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ố)





Cài đặt phép toán
II. Cài đặt phép
II. Cài đặt phép
toán trong C++
toá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.




Cài đặt phép toán
Toá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
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
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
dưới dạng một khai báo hàm theo dạng
thức:
thức:

return_type operator op (parameter list);
V
V
í dụ:
í dụ: class string {
char the_string[100];
string(char *init_string);
string operator+(string second_string);
}
Ví dụ
- Phép toán quá tải toán tử một ngôi (++): Ví dụ 15
- Phép toán quá tải toán tử hai ngôi (*) : Ví dụ 16




Cài đặt phép toán
IV. Các toán tử không thể được quá tải
IV. Các toán tử không thể được quá tải



Toán tử sizeof()
Toán tử sizeof()



Toán tử dot (.)
Toán tử dot (.)




Toán tử phân giải hoạt vi (::)
Toán tử phân giải hoạt vi (::)



Toán tử có điều kiện (?:)
Toán tử có điều kiện (?:)



Toán tử biến trỏ đến thành
Toán tử biến trỏ đến thành
viên của lớp (.*)
viên của lớp (.*)

×