#include <iostream>
#include <string>
using namespace std;
/************************************************************************
运算符重载 << 左移运算符
/************************************************************************/
class Person{
//全局函数声明为该类的友元,可以访问该类的私有成员
friend ostream & operator<<(ostream &cout, Person &per);
public:
Person(){}
Person(int age, int height):m_age(age),m_height(height){}
/*1.使用成员函数重载,per.operator<<(cout) 简化为 per<<cout
发现和正常cout<<per输出不一样,所以最好不用成员重载<<
void operator<<(ostream cout)
{
cout<<this->m_age;
}
*/
private:
int m_age;
int m_height;
};
//使用全局函数重载<<运算符,返回对象引用,可以进行链式编程,operator<<(cout, per)简化为cout<<per
ostream & operator<<(ostream &cout, Person &per)
{
cout<<"age:"<<per.m_age<<","<<"height:"<<per.m_height;
return cout;
}
void test1()
{
/* 1.使用成员函数重载<<调用,不推荐
Person per1(10,160);
cout<<per1;
//本地调用
//per1.operator <<(cout);
//简化调用
per1<<cout;
*/
//2.使用全局函数重载<<调用
Person per2(20,160);
//本质调用
operator<<(cout, per2)<<endl;
//简化调用,链式编程实现换行
cout<<per2<<endl;
}
int main()
{
test1();
return 0;
}
C++ 重载<<
最新推荐文章于 2024-08-07 16:35:02 发布