tailieunhanh - Bài giảng Kỹ thuật lập trình: Bài 10 - TS. Đào Trung Kiên

Bài giảng Kỹ thuật lập trình: Bài 10 do TS. Đào Trung Kiên biên soạn trình bày các nội dung sau: Chồng phương thức trong lớp, tham số mặc định của hàm/phương thức, định nghĩa chồng toán tử, chồng toán tử một ngôi, toán tử chuyển kiểu, tổng hợp các cách chuyển kiểu | Bài 10: Chồng hàm và toán tử (Function and operator overload) 1 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Chồng hàm C++ cho phép nhiều hàm trong cùng một phạm vi (toàn cục, trong cùng namespace, hàm static trong một file nguồn,.) có thể có trùng tên, nhưng phải khác nhau về các tham số gọi (số tham số, kiểu từng tham số) 1. 2. 3. 4. 5. int compare(int n1, int n2); int compare(float x1, float x2); bool compare(float x1, float x2); // lỗi int compare(string& s1, string& s2); int compare(const string& s1, const string& s2); Để xác định đúng hàm gọi, trình biên dịch sẽ ưu tiên hàm có các kiểu tham số chính xác như các tham số khi gọi, nếu không có thì sẽ dùng hàm nào mà các tham số có thể chuyển kiểu được sang string ss1("xyz"), ss2("mpnq"); const string cs("aaa"); compare(, ); // lỗi compare("abcd", "12345"); // hàm 5 compare(ss1, ss2); // hàm 4 compare(ss1, cs); // hàm 5 2 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Chồng phương thức trong lớp Tương tự, các phương thức trong cùng một lớp cũng có thể được định nghĩa chồng class C public: int int int }; { compare(int x, int y); compare(int x, int y) const; compare(float x, float y); Định nghĩa chồng ở lớp con sẽ che mất các phương thức cùng tên của lớp mẹ 3 class D: public C { public: int compare(string s1, string s2); }; D d; ("1234", "abcd"); (10, 20); (10, 20); // OK // lỗi // OK EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Tham số mặc định của hàm/phương thức Các tham số của hàm có thể có giá trị mặc định (là giá trị được dùng nếu bỏ qua khi gọi) Tham số mặc định phải là các tham số cuối cùng của hàm void out(double x, int width = 7, int prec = 3) {.} out(, 10, 5); out(, 10); // out(, 10, 3); out(); // out(, 7, 3); void f(char c = 'y', int n, bool b = true) {.} // .

TỪ KHÓA LIÊN QUAN