Chapter 8 - Operator Overloading
Số trang: 80
Loại file: pdf
Dung lượng: 309.62 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 8 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Sử dụng các toán tử với các đối tượng (operatoroverloading)– đối với một số lớp, sử dụng toán tử trong sáng hơn sử dụng các lờigọi hàmobject2 = object1.add(object2);object2 = object2 + object1;
Nội dung trích xuất từ tài liệu:
Chapter 8 - Operator Overloading 1 Chapter 8 - Operator Overloading Outline 8.1 Introduction 8.2 Fundamentals of Operator Overloading 8.3 Restrictions on Operator Overloading 8.4 Operator Functions as Class Members vs. as friend Functions 8.5 Overloading Stream-Insertion and Stream-Extraction Operators 8.6 Overloading Unary Operators 8.7 Overloading Binary Operators 8.8 Case Study: Array Class 8.9 Converting between Types 8.10 Case Study: A String Class 8.11 Overloading ++ and -- 8.12 Case Study: A Date Class 8.13 Standard Library Classes string and vector© 2003 Prentice Hall, Inc. All rights reserved. 2 8.1 Introduction• Sử dụng các toán tử với các đối tượng (operator overloading) – đối với một số lớp, sử dụng toán tử trong sáng hơn sử dụng các lời gọi hàm object2 = object1.add(object2); object2 = object2 + object1; – toán tử cảm ngữ cảnh (sensitive to context) Ví dụ • 3 8.2 Fundamentals of Operator Overloading • Các kiểu dữ liệu – Có sẵn (Built in) (int, char) hoặc kiểu người dùng (user- defined) – Có thể sử dụng các toán tử có sẵn cho các kiểu dữ liệu người dùng • Không thể tạo toán tử mới • Overloading operators – Tạo một hàm của lớp – Đặt tên hàm là operator tiếp theo là ký hiệu • Operator+ dành cho phép cộng +© 2003 Prentice Hall, Inc. All rights reserved. 4 8.2 Fundamentals of Operator Overloading • Sử dụng toán tử với một đối tượng – Nó phải được overloaded cho lớp đó • ngoại trừ: • phép gán, = – phép gán từng thành viên của đối tượng này cho đối tượng kia (Memberwise assignment between objects) • toán tử địa chỉ, & – trả về địa chỉ của đối tượng • cả hai đều có thể được overloaded • Overloading cho ký hiệu ngắn gọn object2 = object1.add(object2); object2 = object2 + object1;© 2003 Prentice Hall, Inc. All rights reserved. 5 8.3 Restrictions on Operator Overloading • Không thể thay đổi: – Hoạt động của các toán tử đối với các kiểu dữ liệu có sẵn • ví dụ., không thể thay đổi phép cộng số nguyên – Thứ tự ưu tiên của các toán tử – Quan hệ kết hợp - Associativity (left-to-right hoặc right-to- left) – Số lượng toán hạng (operand) • & là toán tử đơn, chỉ dành cho một toán hạng • Không thể tạo các toán tử mới • Các toán tử phải được overloaded một cách tường minh – Overload + không có nghĩa cả += cũng được overload© 2003 Prentice Hall, Inc. All rights reserved. 6 8.3 Restrictions on Operator Overloading Operators that can be overloaded + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= > >>= [] () new delete new[] delete[] Operators that cannot be overloaded . .* :: ?: sizeof© 2003 Prentice Hall, Inc. All rights reserved. 7 8.4 Operator Functions As Class Members Vs. As Friend Functions • aa@bb aa.operator@(bb) hoặc operator@(aa,bb) • @aa aa.operator@( ) hoặc operator@(aa) • aa@ aa.operator@(int) hoặc operator@(aa,int) • Operator functions – Member functions • Sử dụng từ khóa this để ngầm lấy tham số – là toán hạng bên trái đối với các toán tử hai ngôi (ví dụ +) – là toán hạng duy nhất đối với các toán tử một ngôi • Toán tử và toán hạng bên trái nhất phải thuộc cùng lớp – Non member functions • Cần tham số cho cả hai toán hạng • Có thể lấy các đối tượng không thuộc lớp của toán tử • Phải là friend để truy nhập các dữ liệu private hoặc protected© 2003 Prentice Hall, Inc. All rights reserved. 8 8.4 Operator Functions As Class Members Vs. As Friend Functions • Các phép toán có tính giao hoán – phép + cần có tính giao hoán • cả “a + b” và “b + a” đều phải chạy được – giả sử ta có hai lớp khác nhau – Overloaded operator chỉ có thể là member function khi lớp của nó ở bên trái • HugeIntClass + long int – ...
Nội dung trích xuất từ tài liệu:
Chapter 8 - Operator Overloading 1 Chapter 8 - Operator Overloading Outline 8.1 Introduction 8.2 Fundamentals of Operator Overloading 8.3 Restrictions on Operator Overloading 8.4 Operator Functions as Class Members vs. as friend Functions 8.5 Overloading Stream-Insertion and Stream-Extraction Operators 8.6 Overloading Unary Operators 8.7 Overloading Binary Operators 8.8 Case Study: Array Class 8.9 Converting between Types 8.10 Case Study: A String Class 8.11 Overloading ++ and -- 8.12 Case Study: A Date Class 8.13 Standard Library Classes string and vector© 2003 Prentice Hall, Inc. All rights reserved. 2 8.1 Introduction• Sử dụng các toán tử với các đối tượng (operator overloading) – đối với một số lớp, sử dụng toán tử trong sáng hơn sử dụng các lời gọi hàm object2 = object1.add(object2); object2 = object2 + object1; – toán tử cảm ngữ cảnh (sensitive to context) Ví dụ • 3 8.2 Fundamentals of Operator Overloading • Các kiểu dữ liệu – Có sẵn (Built in) (int, char) hoặc kiểu người dùng (user- defined) – Có thể sử dụng các toán tử có sẵn cho các kiểu dữ liệu người dùng • Không thể tạo toán tử mới • Overloading operators – Tạo một hàm của lớp – Đặt tên hàm là operator tiếp theo là ký hiệu • Operator+ dành cho phép cộng +© 2003 Prentice Hall, Inc. All rights reserved. 4 8.2 Fundamentals of Operator Overloading • Sử dụng toán tử với một đối tượng – Nó phải được overloaded cho lớp đó • ngoại trừ: • phép gán, = – phép gán từng thành viên của đối tượng này cho đối tượng kia (Memberwise assignment between objects) • toán tử địa chỉ, & – trả về địa chỉ của đối tượng • cả hai đều có thể được overloaded • Overloading cho ký hiệu ngắn gọn object2 = object1.add(object2); object2 = object2 + object1;© 2003 Prentice Hall, Inc. All rights reserved. 5 8.3 Restrictions on Operator Overloading • Không thể thay đổi: – Hoạt động của các toán tử đối với các kiểu dữ liệu có sẵn • ví dụ., không thể thay đổi phép cộng số nguyên – Thứ tự ưu tiên của các toán tử – Quan hệ kết hợp - Associativity (left-to-right hoặc right-to- left) – Số lượng toán hạng (operand) • & là toán tử đơn, chỉ dành cho một toán hạng • Không thể tạo các toán tử mới • Các toán tử phải được overloaded một cách tường minh – Overload + không có nghĩa cả += cũng được overload© 2003 Prentice Hall, Inc. All rights reserved. 6 8.3 Restrictions on Operator Overloading Operators that can be overloaded + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= > >>= [] () new delete new[] delete[] Operators that cannot be overloaded . .* :: ?: sizeof© 2003 Prentice Hall, Inc. All rights reserved. 7 8.4 Operator Functions As Class Members Vs. As Friend Functions • aa@bb aa.operator@(bb) hoặc operator@(aa,bb) • @aa aa.operator@( ) hoặc operator@(aa) • aa@ aa.operator@(int) hoặc operator@(aa,int) • Operator functions – Member functions • Sử dụng từ khóa this để ngầm lấy tham số – là toán hạng bên trái đối với các toán tử hai ngôi (ví dụ +) – là toán hạng duy nhất đối với các toán tử một ngôi • Toán tử và toán hạng bên trái nhất phải thuộc cùng lớp – Non member functions • Cần tham số cho cả hai toán hạng • Có thể lấy các đối tượng không thuộc lớp của toán tử • Phải là friend để truy nhập các dữ liệu private hoặc protected© 2003 Prentice Hall, Inc. All rights reserved. 8 8.4 Operator Functions As Class Members Vs. As Friend Functions • Các phép toán có tính giao hoán – phép + cần có tính giao hoán • cả “a + b” và “b + a” đều phải chạy được – giả sử ta có hai lớp khác nhau – Overloaded operator chỉ có thể là member function khi lớp của nó ở bên trái • HugeIntClass + long int – ...
Tìm kiếm theo từ khóa liên quan:
thủ thuật máy tính công nghệ thông tin tin học quản trị mạng computer networkGợi ý tài liệu liên quan:
-
52 trang 411 1 0
-
24 trang 350 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 291 0 0 -
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 286 0 0 -
74 trang 275 0 0
-
96 trang 275 0 0
-
Làm việc với Read Only Domain Controllers
20 trang 274 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 265 1 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 261 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 251 0 0