<<运算符需要定义为非成员函数,其返回值为ostream&,以便于将其传递给后续的<<运算符
而且通常会定义类的成员函数print,以便更好的访问类的成员:
#include <iostream>
using namespace std;
class A{
public:
A(int a):d(a){}
ostream & print(ostream &os) const //类成员函数可以访问私有成员
{
os<<"A::d = "<<d<<endl;
return os;
}
private:
int d;
};
ostream& operator <<(ostream &os, const A &a)
{
return a.print(os); //通过类成员函数进行输出
}
int main ()
{
A a1(1);
cout<<a1;
return 0;
}
运行程序输出:
A::d = 1