#include <iostream>
// 重载前置和后置操作符
class UInt{
public:
UInt():m_id(0) {}
friend std::ostream& operator<<(std::ostream& cout, const UInt &it);
// 前置自增
UInt& operator++() {
std::cout<<"prefix++"<<std::endl;
(*this) +=1;
return *this;
}
// 后置自增,为了区分前置自增,参数中需要有int类型参数(函数体中并不用到,实参都是0)
// 需要申请变量保留旧的值
const UInt operator++(int i) {
std::cout<<"postfix++"<<std::endl;
UInt old = *this;
++(*this);
return old;// 函数返回const原因是,不支持it++++操作,即便支持,后面++也是对it++的对象进行加1,而不是it加1
}
UInt& operator+=(int i) {
std::cout<<"+="<<std::endl;
(*this).m_id +=i;
return *this;
}
int m_id;
};
std::ostream& operator<<(std::ostream& cout, const UInt &it){
std::cout<<it.m_id<<std::endl;
return cout;
}
void Test()
{
UInt it;
it++;
std::cout<<it<<std::endl;
UInt it1;
++(++it1);
std::cout<<it1<<std::endl;
}
int main()
{
Test();
return 0;
}
C++ 前置和后置
最新推荐文章于 2024-04-09 23:22:11 发布