您当前位置: 首页 » 编码技巧 » ++重载符

++重载符

2013-10-10 |

首先说一下++重载符,++分为前后两种方式的调用。因此就有了两种的符号的调用。大致如下(对于后置++的做法采用了不严谨的重载,返回的应该是 const对象)

namespace class_cplusplus10
{
class CBase
{
public:
CBase& operator++()        //这里是前置++调用
{
printf(_T("class_cplusplus10::CBase& operator++()\n"));
return *this;
}
CBase& operator++(int)     //这里是后置++调用
{
printf(_T("class_cplusplus10::CBase& operator++(int)\n"));
return *this;
}

CBase& operator--()
{
printf(_T("class_cplusplus10::CBase& operator--()\n"));
return *this;
}
CBase& operator--(int)
{
printf(_T("class_cplusplus10::CBase& operator--(int)\n"));
return *this;
}
};

}

上面的代码已经很好的说明了哪一些是前置调用重载,哪一些是后置调用的重载。

然后通过这些函数可以来看看一些哗众取宠的笔试题。

class_cplusplus10::CBase base;
++base++;

问++base++的调用是怎样的,通过调试发现,实际上后置++是先被调用,然后前置++。

不过这里是c++,而这种笔试题往往考的是操作符的优先级。也许一个对象和一个内置类型的变量存在一些不同

分类:

编码技巧

| 标签: