前置++/--和后置++/--

简介:
对此一直理解不深,今日偶然之间发现自己根本没有理解他们.
今天我发现:
 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
看到这个算符重载的代码就很明白了.
后置++返回的是传入的参数,而前置传入的是引用,自然返回的也是引用,也就只能是改变的值.
目录
相关文章
12-Jmeter前置、后置处理器简介
12-Jmeter前置、后置处理器简介
|
2月前
|
算法 程序员 C语言
【C++ 运算符重载】深入理解C++迭代器中的前置与后置++操作符
【C++ 运算符重载】深入理解C++迭代器中的前置与后置++操作符
48 0
|
1月前
|
Java 测试技术 数据处理
JMeter前置处理器-Beanshell前置处理器详解
JMeter的Beanshell前置处理器允许用Java-like语法执行测试前的自定义逻辑,如参数化和数据处理。要添加它,右键点击HTTP请求,选择“添加”-&gt;“前置处理器”-&gt;“Beanshell前置处理器”。内置变量如`vars`, `ctx`, `log`和`props`提供与JMeter变量、上下文、日志和属性的交互。例如,`vars.get(&quot;key&quot;)`用于获取变量,`log.info()`用于记录日志。使用这些工具,测试者能增强性能测试的复杂性和准确性。
26 3
扒扒javascipt前置++跟后置++的那些事
扒扒javascipt前置++跟后置++的那些事
|
5月前
前置++与后置++的区别
前置++与后置++的区别
39 0
|
5月前
|
XML Java 数据格式
spring-aop的切入表达式和JoinPoint的使用以及怎么返回通知获取结果和在异常通知中获取异常还有环绕通知
spring-aop的切入表达式和JoinPoint的使用以及怎么返回通知获取结果和在异常通知中获取异常还有环绕通知
38 0
|
9月前
|
测试技术 Python
unittest--前置和后置
unittest--前置和后置
|
10月前
|
Java 开发者 Spring
Spring 中后置处理器的作用?
Spring 中后置处理器的作用?
133 0
|
10月前
|
存储 Java 编译器
一文打通:从字节码指令的角度解读前置后置自增自减(加加++减减--)
一文打通:从字节码指令的角度解读前置后置自增自减(加加++减减--)
43 0
|
11月前
|
Java Spring
spring中使用环绕通知解决基于注解的通知顺序问题
spring中使用环绕通知解决基于注解的通知顺序问题