Tài liệu đa năng hóa toán tử

41 1.2K 1
Tài liệu đa năng hóa toán tử

Đ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

Tài liệu đa năng hóa toán tử

CHƢƠNG 4: ĐA NĂNG HOÁ TOÁN TỬ (OPERATOR OVERLOADING) Khoa Công Nghệ Thông Tin Truyền Thông Đại học Bách khoa – Đại học Đà Nẵng Khoa Công Nghệ Thông Tin - Đại Học Bách khoa Đà Nẵng Nội dung  Đa hoá hàm  Đa hoá toán tử  Giới hạn đa hoá toán tử  Chuyển đổi kiểu  Đa hoá toán tử xuất ()  Đa hoá toán tử [], toán tử ()  Khởi tạo ngầm định - Gán ngầm định  Đa hoá toán tử ++  Đa hoá new delete Khoa Công Nghệ Thông Tin - Đại Học Bách khoa Đà Nẵng Đa hoá hàm Định nghĩa hàm tên  Đối số phải khác nhau:   Số lƣợng  Thứ tự long GetTime (void); // số giây tính từ nửa đêm void GetTime (int &hours=0, int &minutes=0, int &seconds=0);   Kiểu void main() { int h, m, s; long t = GetTime(); // Gọi hàm ??? GetTime(h, m, s); // Gọi hàm ??? } Có thể dùng đối số mặc định Khoa Cơng Nghệ Thông Tin - Đại Học Bách khoa Đà Nẵng Đa hoá toán tử Định nghĩa phép tốn đối tƣợng  Các phép tốn tái định nghĩa:  Đơn hạng Nhị hạng  + - new * ! ~ & ++ () -> ->* delete + - * / % & | ^ > = += -= /= %= &= |= ^= = == != < > = && || [] () , Các phép tốn khơng thể tái định nghĩa: * :: ?: Khoa Công Nghệ Thông Tin - Đại Học Bách khoa Đà Nẵng sizeof Giới hạn đa hoá toán tử       toán tử gọi hàm () - tốn tử nhiều ngơi Thứ tự ƣu tiên tốn tử khơng thể đƣợc thay đổi đa hóa Tính kết hợp tốn tử khơng thể đƣợc thay đổi đa hóa Các tham số mặc định sử dụng với tốn tử đa hóa Khơng thể thay đổi số tốn hạng mà tốn tử u cầu Khơng thể thay đổi ý nghĩa toán tử làm việc kiểu có sẵn Khơng thể dùng đối số mặc định Khoa Công Nghệ Thông Tin - Đại Học Bách khoa Đà Nẵng Đa hoá toán tử    Khai báo định nghĩa toán tử thực chất không khác với việc khai báo định nghĩa nghĩa loại hàm khác sử dụng tên hàm "operator @" cho toán tử "@"  để overload phép "+", ta dùng tên hàm "operator +" Số lƣợng tham số khai báo phụ thuộc hai yếu tố:  Toán tử toán tử đơn hay đơi  Tốn tử đƣợc khai báo hàm toàn cục hay phƣơng thức lớp aa@bb @aa aa@ aa.operator@(bb) aa.operator@( ) aa.operator@(int) Là phƣơng thức lớp Khoa Công Nghệ Thông Tin - Đại Học Bách khoa Đà Nẵng operator@(aa,bb) operator@(aa) operator@(aa,int) Là hàm tồn cục Đa hố tốn tử  Complex x(5); Ví dụ: Sử dụng tốn tử "+" để cộng hai đối tƣợng Complex y(10); lớp Complex trả kết Complex  Ta khai báo hàm toàn cục sau z = x + y; const Complex operator+(const Complex& num1, const Complex& num2); "x+y" đƣợc hiểu "operator+(x,y)"  dùng từ khoá const để đảm bảo tốn hạng gốc khơng bị thay đổi  Hoặc khai báo toán tử dƣới dạng thành viên Complex: const Complex operator+(const Complex& num);    đối tƣợng chủ phƣơng thức đƣợc hiểu toán hạng thứ toán tử "x+y" đƣợc hiểu "x.operator+(y)" Khoa Công Nghệ Thông Tin - Đại Học Bách khoa Đà Nẵng Đa hoá toán tử (tt)  Bằng hàm thành viên: Khi đa hóa (), [], -> =, hàm đa hóa toán tử phải khai báo thành viên lớp  Tốn tử ngơi hàm khơng có tham số, tốn tử ngơi hàm có tham số  class Point { public: Point (int x, int y) { Point::x = x; Point::y = y; } Point operator + (Point &p) { return Point(x + p.x,y + p.y); } Point operator - (Point &p) { return Point(x - p.x, y - p.y); } private: int x, y; }; Có tham số (Nếu tốn tử hai ngôi) void main() { Point p1(10,20), p2(10,20); Point p3 = p1 + p2; Point p4 = p1 - p2; Point p5 = p3.operator + (p4); Point p6 = p3.operator – (p4); }; Khoa Công Nghệ Thông Tin - Đại Học Bách khoa Đà Nẵng a @ b: a.operator @(b)  x @ b: với x thuộc kiểu float, int, … không thuộc kiểu lớp đinh nghĩa   Operator @ (x, b) Khoa Công Nghệ Thông Tin - Đại Học Bách khoa Đà Nẵng Đa hố tốn tử (tt)  Bằng hàm tồn cục: toán hạng cực trái toán tử đối tƣợng thuộc lớp khác thuộc kiểu liệu có sẵn  thƣờng khai báo friend class Point { public: Point (int x, int y) { Point::x = x; Point::y = y; } friend Point operator + (Point &p, Point &q); friend Point operator - (Point &p, Point &q) ; private: int x, y; }; Point operator + (Point &p, Point &q) {return Point(p.x + q.x,p.y + q.y); } Point operator - (Point &p, Point &q) {return Point(p.x - q.x,p.y - q.y); } Có tham số (Nếu tốn tử hai ngôi) void main() { Point p1(10,20), p2(10,20); Point p3 = p1 + p2; Point p4 = p1 - p2; Point p5 =operator + (p3, p4); Point p6 = operator – (p3, p4); }; Khoa Công Nghệ Thông Tin - Đại Học Bách khoa Đà Nẵng 10 ...  Đa hoá hàm  Đa hoá toán tử  Giới hạn đa hoá toán tử  Chuyển đổi kiểu  Đa hoá toán tử xuất ()  Đa hoá toán tử [], toán tử ()  Khởi tạo ngầm định - Gán ngầm định  Đa hoá toán. .. sizeof Giới hạn đa hoá toán tử       toán tử gọi hàm () - tốn tử nhiều ngơi Thứ tự ƣu tiên tốn tử khơng thể đƣợc thay đổi đa hóa Tính kết hợp tốn tử khơng thể đƣợc thay đổi đa hóa Các tham... Bách khoa Đà Nẵng Đa hoá toán tử (tt)  Bằng hàm thành viên: Khi đa hóa (), [], -> =, hàm đa hóa tốn tử phải khai báo thành viên lớp  Tốn tử ngơi hàm khơng có tham số, tốn tử ngơi hàm có tham

Ngày đăng: 17/08/2012, 08:48

Từ khóa liên quan

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

Tài liệu liên quan