#include<stdlib.h>
#include<iostream>
#include<string>
using namespace std;
/*
4.5.3 递增运算符重载
可通过此实现自己的整型数据
分两种:前置、后置
总结: 前置递增返回引用,后置递增返回值
*/
class MyInteger{
friend ostream & operator<<(ostream & cout, MyInteger myint);
private:
int num;
public:
MyInteger(){
num = 0;
}
// 前置重载++(返回引用)
MyInteger & operator++(){ // 返回引用& 是为了能够一直对一个数据进行递增操作
num++; // 先进行++运算
return *this; // 再将自身做返回
}
// 后置重载++(返回值)
MyInteger operator++(int){ // int代表占位参数,可以用于区分前置和后置
MyInteger temp = *this; // 先记录当前结果
// 记录当前本身的值,然后让本身的值加1,但是返回的是以前的值,达到先返回后++
num++; // 后递增
return temp; // 最后将记录结果做返回
}
};
ostream & operator<<(ostream & cout, MyInteger myint){
cout << myint.num; // 因为成员num为类MyInteger的私有属性,正常无法访问,故设置该函数为友元函数
return cout;
}
void test1(){
MyInteger myint;
cout << myint << endl; // 可以正常输出<---重载左移运算符
cout << ++myint << endl; // 可以正常递增<---重载递增运算符
cout << ++(++myint) << endl;
}
void test2(){
MyInteger myint;
cout << myint++ << endl;
cout << myint << endl;
}
int main()
{
//test1();
test2();
system("pause");
return 0;
}
11.5.3重学C++之【递增运算符重载】
猜你喜欢
转载自blog.csdn.net/HAIFEI666/article/details/114896599
今日推荐
周排行