该函数的名字是 operator@,其中@代表了被重载的运算符。
运算符重载与友元函数 友元函数是一个全局函数,和我们上例写的全局函数类似,只是友元函数可以访问 某个类私有数据。 案例 : 重载左移操作符 (<<), 使得 cout 可以输出对象。 可重载的运算符 自增自减(++/--)运算符重载 当编译器看到 ++a(前置 ++) ,它就调用 operator++(a), 当编译器看到 a++ (后置 ++ ),它就会去调 用 operator++(a,int) 其标准形式为 :#includeusing namespace std; class Data { friend ostream& operator<<(ostream &out, Data &ob); private: int a; int b; public: Data() { cout<<"无参的构造函数"< a = a; //this->b = b; } void showData(void) { cout<<"a = "a +1 b++;//this->b = this->b +1 //后使用 return *this; } //成员函数 重载后置++ ob1++ (先使用 后加) //编译器 默认识别 operator++(a,int) //但是a可以用this代替 从而化简 operator++(int) Data& operator++(int)//ob1++ { //先使用(备份加之前的值) static Data old=*this;//指针解引用后,是这个对象 //后加 a++; b++; //返回备份值 return old; } //重载前置-- --ob3 //编译器 默认识别 operator++(a) //但是a可以用this代替 从而化简 operator--() Data& operator--() { //先减 a--; b--; //后使用(返回) return *this; } //重载后-- ob4-- //编译器 默认识别 operator++(a,int) //但是a可以用this代替 从而化简 operator++(int) Data& operator--(int) { //先使用 static Data old=*this;//注意这里的static,必须要加,否则函数调用结束,就会释放,导致程序错误。 //再减 a--; b--; return old; } }; //普通全局函数 作为类的友元 重载<<运算符 ostream& operator<<(ostream &out, Data &ob) { out<<"a = "< 指针运算符(*、->)重载 设计一个智能指针解决new出来的堆区空间释放问题(局部空间结束后,借助析构函数释放空间)
#includeusing namespace std; class Person { private: int num; public: Person(int num):num(num) { //this->num = num; cout<<"有参构造num = "<



