Giả sử chúng ta có một lớp Person với hai thuộc tính first_name và last_name. Nó cũng có hai phương thức được gọi là get_first_name () và get_last_name () để lấy hoặc đặt tên và họ tương ứng. Chúng ta sẽ phải nạp chồng toán tử trích xuất (<<) để in tên và họ để in chúng bằng cách sử dụng câu lệnh cout.
Vì vậy, nếu đầu vào giống như một đối tượng người có tên và họ ("Sumit", "Ray"), thì đầu ra sẽ là First name - Sumit, Last name - Ray.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
Để nạp chồng toán tử trích xuất, nó phải được định nghĩa bên ngoài lớp
-
Kiểu trả về sẽ là tham chiếu ostream
-
Các tham số đầu vào là một os biến tham chiếu ostream và biến tham chiếu đối tượng
-
sử dụng hệ điều hành giải nén tất cả các phần của đối tượng theo thứ tự thích hợp
-
trả về tham chiếu đối tượng hệ điều hành.
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#include <iostream> using namespace std; class Person { private: string f_name; string l_name; public: Person(string first_name, string last_name) : f_name(first_name), l_name(last_name) {} string& get_first_name() { return f_name; } string& get_last_name() { return l_name; } }; ostream& operator<<(ostream& os, Person& p) { os << "First name: " << p.get_first_name() << ", Last name: " << p.get_last_name(); return os; } int main(){ Person p("Sumit", "Ray"); cout << p << ", he is our member."; }
Đầu vào
p("Sumit", "Ray")
Đầu ra
First name: Sumit, Last name: Ray, he is our member.