定义种的后缀自增操作符的疑问
定义类的后缀自增操作符的疑问
现在有一个问题:这样定义岂不是在使用后缀自增时要给一个int 参数,否则与operator++(int)的声明不匹配呀。关于此点我特意试了一个例子,发现不能运行:
------解决方案--------------------
使用时直接用就行,不用加int参数,这个int参数是给编译器区分前后缀运算符用的,编译器自己就处理掉了
// 定义后缀自增操作符
CheckedPtr CheckedPtr::operator++(int) // 这个int形参只是为了与前缀操作符区别,该形参并不使用
{
// 这儿不需要检查,调用前缀增量(前面已定义)将做检查
CheckedPtr ret(*this); // 保存当前值
++*this; // 前移一个元素并检查
return ret; // 返回保存的旧值
}
现在有一个问题:这样定义岂不是在使用后缀自增时要给一个int 参数,否则与operator++(int)的声明不匹配呀。关于此点我特意试了一个例子,发现不能运行:
#include<iostream>
using namespace std;
void print(int)
{
cout<<"Hello,world!"<<endl;
}
int main(void)
{
print();
system("pause");
return 0;
}
------解决方案--------------------
使用时直接用就行,不用加int参数,这个int参数是给编译器区分前后缀运算符用的,编译器自己就处理掉了