ostream是标准的输出流,我们经常使用cout直接输出,但是我们想过没有去直接用cout打印一个类
下面的代码就直接对"<<"进行符号重载,可以直接打印一个类
Point.h
#ifndef _POINT_H_
#define _POINT_H_
#include <iostream>
using namespace std;
class Point
{
public:
friend ostream& operator<< (ostream& os,const Point& p);
Point(int x,int y);
private:
int m_iX;
int m_iY;
};
#endif
Point.cpp
#include <iostream>
#include "Point.h"
ostream& operator<< (ostream& os,const Point& p)//被const修饰的表面为输入型参数
{
return os << "x=" << p.m_iX << " "<< "y=" << p.m_iY << endl;
//返回的是一个流,可以直接 cout<<Point
}
Point::Point(int x,int y):m_iX(x),m_iY(y)
{
}
main.cpp
#include "Point.h"
int main(void)
{
Point p(2,1);
cout << p; //实现类的打印
return 0;
}