博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前置++/--和后置++/--
阅读量:6655 次
发布时间:2019-06-25

本文共 533 字,大约阅读时间需要 1 分钟。

对此一直理解不深,今日偶然之间发现自己根本没有理解他们.

今天我发现:

 cout<<a++<<endl;

 cout<<++a<<endl;

的值不同,a++返回的是原值,++a返回的是递加后的值.

我不禁冒了冷汗,写了这么多代码,居然会不明白这么简单的东西,还好之前代码没有出现问题.

我为此懊恼不已.细节往往是最重要的,诚然如此啊.


带着一个问题:为什么要分前置和后置?

大家都知道前置比后置要效率高,难道就只是为了效率而存在,显然不会,如果这样,后置就没有存在的任何理由.


ExpandedBlockStart.gif
class CInt {
InBlock.gif  
private:
InBlock.gif    
int m_value;
InBlock.gif  
//
dot.gif
ExpandedBlockEnd.gif
};
None.gifCInt & CInt::
operator++( ) 
//
 前置的是没有参数的,并且返回引用
ExpandedBlockStart.gif
{
InBlock.gif  
this->m_value+=1;
InBlock.gif  
return * 
this;
ExpandedBlockEnd.gif}
None.gif
const CInt CInt::opeartor++(CInt) 
//
 后置的有一个匿名参数,并且返回const值
ExpandedBlockStart.gif
{
InBlock.gif  CInt old = *
this;
InBlock.gif  ++(*
this);
InBlock.gif  
return old;
ExpandedBlockEnd.gif}
None.gif
看到这个算符重载的代码就很明白了.

后置++返回的是传入的参数,而前置传入的是引用,自然返回的也是引用,也就只能是改变的值.

转载地址:http://dfato.baihongyu.com/

你可能感兴趣的文章