Hướng đối tượng - Cài đặt phép toán
Cài đặt phép toánI. Phép toán là hàmI. 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 , 1ii n nE= +( )1 21, , .,nn iie e e E=∈∏1 1n ne E+ +∈11:ni niF E E+=− − − − →∏iE Cài đặt phép toánCó 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ánII. 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ánToá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ớpIII. Phép toán là thành viên của lớpToá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);VVí 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ánIV. Các toán tử không thể được quá tảiIV. 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 (.*) Cài đặt phép toánCác toán tử cho phép quá tải của Các toán tử cho phép quá tải của C++C+++ - * / = < > + - * / = < > += -= *= /=+= -= *= /=<< >> <<= >>=<< >> <<= >>=== != <= >=== != <= >=++ -- % &++ -- % &^ ! | ~^ ! | ~&= ^= |= &&&= ^= |= &&|| %= [] ()|| %= [] ()new delete new delete . 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ánII. Cài đặt phép II. Cài. }Ví dụ - Phép toán quá tải toán tử một ngôi (++): Ví dụ 1 5- Phép toán quá tải toán tử hai ngôi (*) : Ví dụ 16 Cài đặt phép toánIV. Các toán tử