Mẹo Hướng dẫn Đối với toán tử nhập/xuất (>>/ Chi Tiết
Hoàng Lê Minh Long đang tìm kiếm từ khóa Đối với toán tử nhập/xuất (>>/ được Update vào lúc : 2022-06-03 21:34:03 . Với phương châm chia sẻ Bí kíp về trong nội dung bài viết một cách Chi Tiết Mới Nhất. Nếu sau khi đọc tài liệu vẫn ko hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Mình lý giải và hướng dẫn lại nha.
Nạp chồng toán tử trong C++ là những hàm mang tên đặc biệt. Tên hàm gồm từ khóa operator và theo sau là ký hiệu của toán tử đang được định nghĩa.
Nội dung chính- Nạp chồng hàm trong C++Nạp chồng toán tử trong C++Toán tử hoàn toàn có thể nạp chồng và không thể nạp chồng trong C++Ví dụ về Nạp chồng toán tử trong C++
Nạp chồng toán tử được dùng để định nghĩa lại những toán tử có sẵn như ++, – -, +, -, *, /,… cho kiểu tài liệu (class) do người lập trình tự định nghĩa. Nhằm tạo ra toán tử cùng tên nhưng thực hiện trên những lớp rất khác nhau chứ không phải trên những kiểu tài liệu nguyên thủy.
Để dễ hiểu, những bạn xem ví dụ cộng (+) 2 đối tượng phân số phía dưới. Khi cộng (+) sẽ bị lỗi, chính bới chưa tồn tại định nghĩa toán tử cộng (+) cho đối tượng phân số.
#includeLưu ý: Ví dụ có khai báo int x=0, y=1; int tong = x + y; không biến thành lỗi bởi C++ đã định nghĩa sẵn toán tử cộng (+) cho những biến kiểu int rồi.
Cú pháp định nghĩa một toán tử nạp chồng:
Kiểu_trả_về operatorTrong số đó:
– Kiểu_trả_về là kiểu tài liệu của hàm nạp chồng toán tử.
–
– operator
Nếu hàm nạp chồng toán tử là hàm bạn (friend function) thì có một đối số cho toán tử một ngôi và hai đối số cho toán tử hai ngôi.
friend PhanSo operator++(PhanSo b); friend PhanSo operator+(PhanSo a, PhanSo b);Toán tử một ngôi là toán tử chỉ có một toán hạng. Ví dụ: x++, toán tử ++ chỉ có một toán hạng là x. Toán tử hai ngôi là toán tử có hai toán hạng. Ví dụ: a + b, toán tử + phải có đủ 2 số a và b thì mới cộng (+) được.
Trong C++, ta hoàn toàn có thể nạp chồng cho hầu hết những toán tử:
+–*/%^&|~!=< > +=-=*=/=%=^=&=|=<< >> >>=<<===!=<=>=&&||++– –->*,->[]()newnew[]deletedelete[]Nhưng ngoại trừ những toán tử sau đây:
- Toán tử xác định thành phần của lớp (‘.’, ‘->’).
Toán tử phân giải miền xác định (‘::’).
Toán tử điều kiện (‘? :’). Toán tử lấy kích thước (‘sizeof’). Toán tử lấy kiểu tài liệu (‘typeid’)
Lưu ý: Không thể thay đổi những toán tử đã định nghĩa trước trong C++. Ví dụ, không thể định nghĩa lại những phép toán +, -, *, /,… đối với những số kiểu int, float.
Các toán tử một ngôi là những toán tử chỉ có một toán hạng tham gia vào phép toán, như toán tử tăng (++) và toán tử giảm (- -).
#includeCác toán tử hai ngôi có hai toán hạng như toán tử cộng (+), toán tử trừ (-), toán tử nhân (*), toán tử chia (/),…
#includeCác bạn hãy thử viết hàm nạp chồng những toán tử khác ví như -, *, /, %,…
Bài trước và bài sau trong môn học
C++ được cho phép bạn xác định nhiều hơn nữa một định nghĩa cho một tên hàm hoặc một toán tử trong cùng phạm vi (scope), được gọi tương ứng là Nạp chồng hàm (function overloading) và Nạp chồng toán tử (operator overloading) trong C++.
Một khai báo nạp chồng là một khai báo mà đã được khai báo với cùng tên như một khai báo được khai báo trước đó trong cùng phạm vi, ngoại trừ rằng: cả hai khai báo có những tham số rất khác nhau và định nghĩa rất khác nhau.
Khi bạn gọi một hàm nạp chồng hoặc một toán tử nạp chồng, thì compiler quyết định định nghĩa thích hợp nhất để sử dụng bằng việc so sánh những kiểu tham số bạn đã sử dụng để gọi hàm hoặc toán tử với những kiểu tham số đã được xác định trong những định nghĩa. Tiến trình lựa chọn hàm nạp chồng hoặc toán tử nạp chồng thích hợp nhất này được gọi là overload resolution - phân giải nạp chồng.
Nạp chồng hàm trong C++
Bạn hoàn toàn có thể có nhiều định nghĩa cho cùng tên hàm trong cùng phạm vi. Định nghĩa của hàm phải khác lẫn nhau về kiểu và/hoặc số tham số trong list tham số. Bạn không thể nạp chồng những khai báo hàm mà chỉ rất khác nhau ở kiểu trả về.
Trong ví dụ sau, cùng một hàm hamIn được sử dụng để in những kiểu tài liệu rất khác nhau:
#includeQuảng cáo
Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:
Nạp chồng toán tử trong C++
Bạn hoàn toàn có thể định nghĩa lại hoặc nạp chồng hầu hết những toán tử có sẵn trong C++. Vì thế, một lập trình viên hoàn toàn có thể sử dụng những toán tử với kiểu tự định nghĩa (user-defined).
Nạp chồng toán tử trong C++ là những hàm với tên đặc biệt: Tên hàm là từ khóa operator theo sau là ký hiệu của toán tử đang được định nghĩa. Giống như bất kỳ hàm khác, một toán tử nạp chồng có một kiểu trả về và một list tham số.
Box operator+(const Box&);Khai báo toán tử + để cộng hai đối tượng Box và trả về đối tượng Box ở đầu cuối. Hầu hết toán tử nạp chồng hoàn toàn có thể được định nghĩa dưới dạng: những hàm không còn thành viên (non-thành viên) hoặc những hàm thành viên lớp. Trong trường hợp trên, tất cả chúng ta định nghĩa hàm ở dạng non-thành viên của một lớp, thì sau đó tất cả chúng ta phải truyền hai tham số cho từng toán hạng, như sau:
Box operator+(const Box&, const Box&);Ví dụ sau minh họa khái niệm nạp chồng toán tử bởi sử dụng một hàm thành viên. Ở đây, một đối tượng được truyền như thể một tham số mà những thuộc tính của nó sẽ được truy cập bởi sử dụng đối tượng này, đối tượng mà sẽ gọi toán tử này hoàn toàn có thể được truy cập bởi sử dụng toán tử this, như sau:
#includeBiên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:
Toán tử hoàn toàn có thể nạp chồng và không thể nạp chồng trong C++
Bảng dưới liệt kê list những toán tử hoàn toàn có thể được nạp chồng trong C++:
+-*/%^&|~!,=<><=>=++--<<>>==!=&&||+=-=/=%=^=&=|=*=<<=>>=[]()->->*newnew []deletedelete []Còn đây là list những toán tử không thể được nạp chồng trong C++:
Ví dụ về Nạp chồng toán tử trong C++
Dưới đây là những ví dụ đa dạng minh họa Nạp chồng toán tử trong C++, từ đó giúp bạn hiểu sâu hơn về khái niệm này. Bạn click vào link để thấy ví dụ:
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Các bạn hoàn toàn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp những bạn vượt qua những dự án công trình bất Động sản trên trường và đi thực tập Java. Khóa học có mức giá chỉ 300K, nhằm mục đích ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu yếu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack
Follow facebook thành viên Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi những loạt bài tiên tiến nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... tiên tiến nhất của chúng tôi.