//A: 操作符重载实现为类成员函数/*#includeclass Person{private: int age;public: Person(int a){ this->age=a; } //inline bool operator==(const Person &ps)const; inline bool operator==(const Person *ps)const;};//inline bool Person::operator==(const Person &ps)const{// std::cout<<"this->age=="< age<<", ps.age=="< <<"\n";// if(this->age == ps.age)// return true;// else// return false;//};inline bool Person::operator==(const Person *ps)const{ std::cout<<"this->age=="< age<<", ps->age=="< age<<"\n"; if(this->age == ps->age) return true; else return false;};int main(){ //Person p1(10); //Person p2(10); Person *a = new Person(10); Person *b = new Person(10); //if(p1 == p2) if(a == b) { std::cout<<"相等\n"; }else std::cout<<"不相等\n"; system("pause"); return 0; //由上面的测试可以得出结论,指针与指针之间是不能进行重载运算符比较的}*///B:操作符重载实现为非类成员函数(全局函数)#include using namespace std;class Person{public: int age;};bool operator==(Person const &p1, Person const &p2){ if(p1.age == p2.age) return true; else return false;};class Test{private: int m_value;public: Test(int x=3){ m_value = x; } Test &operator++(); //前增量 Test &operator++(int);//后增量 void display() { cout<<"m_value="< <<"\n"; }};//前增量 Test& 是指返回一个Test的地址Test& Test::operator++(){ m_value++; //先增量 return *this; //返回当前对像};//后增量Test& Test::operator++(int){ Test tmp(*this); //创建临时对像 m_value++; //再增量 return tmp; //返回临时对像}int main(){ Person a; Person b; a.age=10; b.age=10; if(a == b){ cout<<"相等\n"; }else cout<<"不相等\n"; cout<<"进行另外一个测试\n"; Test t; t.display(); t++; t.display(); ++t; t.display(); system("pause"); return 0;}