Chuong 05 overload toan tu va ham

84 303 0
Chuong 05   overload toan tu va ham

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

OVERLOAD TOÁN TỬ VÀ HÀM Khoa Công nghệ phần mềm Nội dung  Giới thiệu  Các toán tử C++  Các toán tử overload  Cú pháp Operator Overloading  Chuyển kiểu  Sự nhập nhằng  Phép toán >  Phép toán lấy phần tử mảng: [ ]  Phép toán gọi hàm: ()  Phép toán tăng giảm: ++ -23/05/2016 Lập trình hướng đối tượng Giới thiệu Xét ví dụ sau: Giả sử có lớp PhanSo cung cấp thao tác Set, Cong, Tru, Nhan, Chia PhanSo A, B, C, D, E; C.Set(A.Cong(B)); E.Set(D.Cong(C)); E = A + B + D ??? 23/05/2016 Lập trình hướng đối tượng Giới thiệu Các toán tử cho phép ta sử dụng cú pháp toán học kiểu liệu C++ thay gọi hàm (bản chất gọi hàm)  Ví dụ thay a.set(b.cong(c)); a = b + c;  Gần với kiểu trình bày mà người quen dùng (mang tính tự nhiên)  Đơn giản hóa mã chương trình PhanSo A, B; cin>>A; //A.Nhap(); cin>>B; //B.Nhap(); 23/05/2016 Lập trình hướng đối tượng Giới thiệu  Một lớp liệu phương thức có phép toán giúp người lập trình dễ dàng thể câu lệnh chương trình  Tuy nhiên, cài đặt phép toán cho phép tạo phép toán sở ký hiệu phép toán có, không quyền cài đặt phép toán sự cài đặt thêm phép toán nạp chồng phép toán (operator overloading)  Đối với kiểu liệu người dùng: C++ cho phép định nghĩa toán tử kiểu liệu người dùng overload 23/05/2016 Lập trình hướng đối tượng Operator overload Một toán tử dùng cho nhiều kiểu liệu Như vậy, ta tạo kiểu liệu đóng gói hoàn chỉnh (fully encapsulated) để kết hợp với ngôn ngữ kiểu liệu cài sẵn Ví dụ: SoPhuc z(1,3), z1(2,3.4), z2(5.1,4); z = z1 + z2; z = z1 + z2*z1 + SoPhuc(3,1); 23/05/2016 Lập trình hướng đối tượng Các toán tử C++ Các loại toán tử: 23/05/2016 Lập trình hướng đối tượng Các toán tử C++ Một số toán tử đơn dùng làm toán tử trước toán tử sau Ví dụ phép tăng (++), phép giảm ( ) Một số toán tử dùng làm toán tử đơn toán tử đôi: * Toán tử mục ("[…]") toán tử đôi Các từ khoá "new" "delete" coi toán tử định nghĩa lại 23/05/2016 Lập trình hướng đối tượng Các toán tử overload Các toán tử overload: + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= > >>= [] () new delete new[ ] 23/05/2016 delete[ ] Lập trình hướng đối tượng Cú pháp Operator Overloading Sử dụng tên hàm “operator@” cho toán tử “@”  Ví dụ: operator+ Số lượng tham số khai báo hàm phụ thuộc hai yếu tố:  Toán tử toán tử đơn hay đôi  Toán tử khai báo phương thức toàn cục hay phương thức lớp 2/3 + – 6/5 = ? 23/05/2016 Lập trình hướng đối tượng 10 Phép toán [ ] cho đối tượng void main() { String a("Nguyen van A"); const String aa("Dai Hoc Tu Nhien"); cout [...]... }; 23 /05/ 2016 Lập trình hướng đối tượng 14 Ví dụ - Lớp PhanSo void PhanSo::UocLuoc(){ long usc = USCLN (tu, mau); tu /= usc; mau /= usc; if (mau < 0) mau = -mau, tu = -tu; if (tu == 0) mau = 1; } void PhanSo::Set(long t, long m) { if (m) { tu = t; mau = m; UocLuoc(); } } 23 /05/ 2016 Lập trình hướng đối tượng 15 Ví dụ - Lớp PhanSo PhanSo PhanSo::Cong(PhanSo b) const { return PhanSo (tu* b.mau + mau*b .tu, ... mau*b .tu, mau*b.mau); } PhanSo PhanSo::operator + (PhanSo b) const { return PhanSo (tu* b.mau + mau*b .tu, mau*b.mau); } bool PhanSo::operator == (PhanSo b) const { return tu* b.mau == mau*b .tu; } void PhanSo::Xuat() const { cout

Ngày đăng: 24/06/2016, 22:38

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan