递增运算符重载学习笔记
C++学习笔记
#include <iostream>
using namespace std;
class MyInteger//定义一个自定义整形类
{
friend ostream & operator << (ostream & cout, MyInteger myint);//友元重载左移运算符
public:
MyInteger()
{
m_NUM = 0;
}
//前置递增实现
MyInteger& operator++()//返回地址
{
++m_NUM; //后置递增
return *this;直接值传递返回数据类型
}
*这里一个难点就是后置递增为什么不是返回地址*
如果返回局部对象,在执行完之后this会被释放,后面会引起非法操作
**//MyInteger& operator++(int) int代表占位参数,可以用于区分前置和后置递增**
MyInteger operator++(int)//返回值
{
MyInteger temp = *this;//先记录当时结果
m_NUM++;//再前置递增
return temp;//再返回记录当时的结果
}
private:
int m_NUM;
};
//左移运算符重载实现
ostream & operator << (ostream & cout, MyInteger myint)//ostream是cout定义数据类型
{
cout << myint.m_NUM;
return cout;
}
//测试前置递增函数
void test01()
{
MyInteger myint;//创建一个自定义整型
cout << ++myint << endl;//自定义整形前置地政
}
//测试后置递增函数
void test02()
{
MyInteger myint2;//创建一个自定义整型
cout << myint2++ << endl;//自定义整型后置递增
}
//主函数调用测试函数实现递增运算符重载
int main()
{
test01();
test02();
system("pause");
return 0;
}