lập trình C++ - Quá tải

27 660 4
lập trình C++ - Quá tải

Đ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

1 L p trình C++ 1ậ © Giáo viên: Trần Minh Tuấn tmtuan@ifi.edu.vn Tham khảo thêm slide của GV Mai Thuý Nga 2 Bài 3: Quá t iả 1. Xây dựng chương trình từng bước 2. Quá tải hàm 3. Quá tải phương thức 4. Quá tải toán tử 5. Review 6. Bài tập 3 Chú ý khi xây d ng ch ng ự ươ trình  Xây dựng các lớp từ đơn giản đến phức tạp.  Sau khi cài đặt xong một phương thức cần kiểm tra tính đúng đắn của phương thức đó trước khi thêm các phương thức khác.  Bài toán: Xây dựng lớp Phân số  Một phân số gồm tử số và mẫu số.  Có thể rút gọn phân số, cộng 2 phân số . 4 L p Phân s c b n ớ ố ơ ả  Xây dựng lớp Phân số cơ bản:  class Phanso  {  private:  int tuso; // tử số  int mauso; // mẫu số  public:  void DatTS(int ts); // đặt giá trị cho tử số  void DatMS(int ms); // đặt giá trị cho mẫu số  int LayTS(); // lấy giá trị tử số  int LayMS(); // lấy giá trị mẫu số  void InPS(); // in phân số dưới dạng a/b  }; 5 L p Phân s c b n ớ ố ơ ả  Sau khi cài đặt xong lớp Phanso, kiểm tra lớp này:  void main()  {  Phanso x;  x.DatTS(3);  x.DatMS(5);  cout<<“Phan so x co tu so la ”<<x.LayTS()  <<“ va mau so la “<<x.LayMS()<<endl;  cout<<“Phan so nay co dang : “;  x.InPS();  } 6 Thêm c u tấ ử  Thêm các cấu tử:  Phanso(); // cấu tử mặc định, đặt phân số 1/1  Phanso(int a); // đặt phân số a/1  Phanso(int a, int b); // đặt phân số a/b  Phanso(Phanso &ps); // cấu tử sao chép  Kiểm tra:  void main()  {  Phanso x, y(5), z(2,7), k(y);  .  } 7 Thêm ph ng th c Rút g nươ ứ ọ  Ta cần xây dựng hàm tìm ước số chung lớn nhất. Nên để hàm này là public hay private ?  Xây dựng phương thức Rút gọn phân số sử dụng hàm tìm USCLN ở trên  class Phanso  {  private:  …  int USCLN();  public:  .  Phanso Rutgon();  }; 8 Thêm ph ng th c Rút g nươ ứ ọ  Kiểm tra:  void main()  {  Phanso x(6,3), y(5,8), z;  x.InPS(); z = x.Rutgon(); z.InPS();  y.InPS(); z = y.Rutgon(); z.InPS();  } 9 Thêm ph ng th c C ngươ ứ ộ  Xây dựng phương thức cộng 2 phân số  class Phanso  {  public:  .  Phanso Cong(Phanso ps);  };  Kiểm tra:  Phanso x(3,6), y(2,5), z;  z = x.Cong(y);  z = z.Rutgon();  cout<<“Tong cua ”; x.InPS();  cout<<“ va “; y.InPS();  cout<<“ la “; z.InPS(); 10 V n đ v i l p Phansoấ ề ớ ớ  Lớp Phanso đã xây dựng là tương đối hoàn chỉnh, tuy nhiên nó có hạn chế sau:  Phương thức Cong không được “tự nhiên”. Sẽ thuận tiện hơn nếu ta có thể viết z = x + y.  Giải pháp: Sử dụng quá tải ! [...].. .Quá tải (Overloading)  Quá tải trong C++ có 2 dạng:    Dùng nhiều hàm có cùng một tên nhưng có đối số khác nhau (quá tải hàm) Dùng các cài đặt của riêng lớp cho các toán tử, ví dụ như +, -, ++… (quá tải toán tử) Hai khả năng của quá tải đều rất mạnh, nhưng để sử dụng chúng một cách hiệu quả đòi hỏi người lập trình phải thận trọng 11 Quá tải hàm   Ngôn ngữ C bắt buộc... giờ hợp lệ 23 Chú ý với quá tải toán tử   Nguyên lý quá tải toán tử khá đơn giản Về thực chất toán tử quá tải của lớp có vai trò như một phương thức, nó không hoàn toàn mang ý nghĩa gốc Không nên lạm dụng khả năng quá tải làm cho chương trình khó hiểu    Đảm bảo rằng các phép toán vẫn giữ được mục đích nguyên thuỷ của nó Nên chú thích vào những toán tử quá tải Nên quá tải toán tử = nếu lớp có... là quá tải toán tử (operator overloading) Các toán tử có thể quá tải là:   Cú pháp quá tải toán tử: kiểu_trả_về operator op(đối_số);      ++, , +, -, *, /, +=, -= , *=, /=, , . pháp: Sử dụng quá tải ! 11 Quá t i (Overloading)ả  Quá tải trong C++ có 2 dạng:  Dùng nhiều hàm có cùng một tên nhưng có đối số khác nhau (quá tải hàm) . overloading).  Các toán tử có thể quá tải là:  ++, -- , +, -, *, /, +=, -= , *=, /=, <, >, <<…  Cú pháp quá tải toán tử: kiểu_trả_về operator

Ngày đăng: 16/10/2013, 21:15

Từ khóa liên quan

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

Tài liệu liên quan