假设有类A,它的私有成员是一个整型变量a_
A a;
我们想要把它的私有成员直接用 cout<<a<<endl 输出的话要用到左移运算符的重载。
我们把<<运算符重载为全局函数,在类A中设为友元,即可直接用cout输出。
关于自增运算符,要实现a++,++a;需要重载前置自增,后置自增运算符。
#include<iostream>
using namespace std;
class A
{
friend ostream& operator<<(ostream& cout, A& A_);
private:
int a_num;
public:
A() = default; // 自动生成无参构造函数
A(int x) :a_num(x) {} // 构造函数
A& operator++() // 重载前置自增运算符
{
a_num++;
return *this;
}
};
ostream& operator<<(ostream& cout, A& A_) // 重载左移运算符
{
cout << A_.a_num;
return cout;
}
int main()
{
A a1(5);
cout << "before:" << a1 << endl;
cout << "after:" << ++a1 << endl;
cout << "final:" << a1 << endl;
system("pause");
return 0;
}