Giả sử chúng ta có lớp Person với hai thuộc tính first_name và last_name. Có phương thức get_first_name() và get_last_name(). Chúng ta phải nạp chồng toán tử xuất (<<) để in first name và last name khi dùng cout.
Ví dụ: Person("Sumit", "Ray") → "First name: Sumit, Last name: Ray, he is our member."
Giải thuật
- Toán tử << được định nghĩa ngoài lớp
- Kiểu trả về: ostream&
- Tham số: ostream& os, Person& p
- Sử dụng os để xuất các thành phần theo thứ tự
- Trả về os
Ví dụ minh họa
#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.