本文共 533 字,大约阅读时间需要 1 分钟。
对此一直理解不深,今日偶然之间发现自己根本没有理解他们. 今天我发现: cout<<a++<<endl; cout<<++a<<endl; 的值不同,a++返回的是原值,++a返回的是递加后的值. 我不禁冒了冷汗,写了这么多代码,居然会不明白这么简单的东西,还好之前代码没有出现问题. 我为此懊恼不已.细节往往是最重要的,诚然如此啊. 带着一个问题:为什么要分前置和后置? 大家都知道前置比后置要效率高,难道就只是为了效率而存在,显然不会,如果这样,后置就没有存在的任何理由. class CInt {
private:
int m_value;
// };
CInt & CInt::
operator++( )
// 前置的是没有参数的,并且返回引用 {
this->m_value+=1;
return *
this;
}
const CInt CInt::opeartor++(CInt)
// 后置的有一个匿名参数,并且返回const值 {
CInt old = *
this;
++(*
this);
return old;
}
看到这个算符重载的代码就很明白了. 后置++返回的是传入的参数,而前置传入的是引用,自然返回的也是引用,也就只能是改变的值. 转载地址:http://dfato.baihongyu.com/