定义种的后缀自增操作符的疑问

定义类的后缀自增操作符的疑问
本帖最后由 wsfxzxb 于 2012-12-25 12:54:19 编辑

// 定义后缀自增操作符
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参数是给编译器区分前后缀运算符用的,编译器自己就处理掉了