#include<iostream>
using namespace std;
class A{
public:
A(int _a = ):aa(_a){}
friend const A operator+(const A &a,const A &b);
friend ostream & operator<<(ostream & out,const A & a);
const A operator-(const A &a);
private:
int aa;
};
const A operator+(const A &a,const A &b){
return (a.aa + b.aa);
}
ostream & operator<<(ostream & out,const A & a){
out<<a.aa<<endl;
return out;
}
const A A::operator-(const A &a){
return ((*this).aa-a.aa);
}
int main(){
A a();
A b();
A c;
A d;
c = a+b;
d = a-b;
cout<<c<<endl;
cout<<d<<endl;
}
输出操作符的重载,只能用友元函数的形式,不能是成员函数。
输出操作符的重载,返回了输出流的引用,可以用单一的输出语句,实现多个输出。
输出操作符返回的,一定不能是局部变量,只能是函数参数传递进来输出流对象。
输出操作符(<<)的重载,返回的ostream一定不能是const类型!!!
而且,输出操作符(<<)函数里的ostream参数,也不能是const类型。
因为,任何一次使得ostream成为const类型的声明,都将使得ostream成为一个不能被修改的常量!也意味着,不能再向ostream写入任何数据!