我们如果想实现cout<<p输出对象p,需要左移重载运算符<<,而左移运算符需要使用全局函数重载,利用成员函数重载的话只能写成p<<cout。
cout是一个ostream对象
void& operator<<(ostream &out,Person &p){
out<<"p.a"<<"p.b";
return out; // 返回cout对象以实现链式编程
}
void test(){
Person p;
cout<<p<<"hello world"<<endl;
}
tip:
- ostream &out为什么加引用=》为了保证只有一个cout对象。
- 如果a和b都是私有成员,那么可以将重载函数作为Person类的友元函数。