#include <iostream> using namespace std; //实现一元运算符的前置重载 class A { public: friend A operator++(A &t1); public: void setA(int a) { this->a=a; } void getA() { cout<<a<<endl; } public: A operator--() { this->a--; return *this; } private: int a; }; A operator++(A &t1)//友元函数 { t1.a++; return t1; } int main() { A a1; a1.setA(10); a1.getA(); ++a1; a1.getA(); --a1; a1.getA(); system("pause"); return 0; }
这里注意类的成员函数的重载中的形参永远比友元函数的形参少一个!!!!!!!
#include <iostream> using namespace std; //实现一元运算符的前置重载 class A { public: friend A operator++(A &t1); //A operator++(A & t2,int) friend A operator++(A &t2,int); public: void setA(int a) { this->a=a; } void getA() { cout<<a<<endl; } public: A operator--()//前置-- { this->a--; return *this; } A operator--(int)//后置-- { return * this; this->a--; } private: int a; }; A operator++(A &t1)//前置++友元函数 { t1.a++; return t1; } A operator++(A & t2,int)//后置++友元函数,先返回在改变,使用占位操作符 { return t2; t2.a ++; } int main() { A a1; a1.setA(10); a1.getA(); ++a1; a1.getA(); --a1; a1.getA(); a1++; a1.getA(); a1--; a1.getA(); system("pause"); return 0; }
前置的很特别哟