C++中,a++、a+=1、a=a+1、++a 有什么区别?以及效率问题
2016-09-19 16:47
477 查看
a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值 a+=1: 事实上相当于++a a=a+1: 虽然有点雷同于a+=1,但不同的是此时右值的a和1做相加操作,形成一个副本然后赋值给a,所以有额外操作 ++a:将a自增1并返回a 鉴于a++和++a的差别,C++Primer建议用++a作为for循环的递增量效率问题: 1.在内建数据类型时 (即自增表示式的结果没有被使用,只是简单的用于递增操作) ,这时这两个表达式的效率是相同的。 2.在自定义数据类型时 (主要指有类的情况) ,由于++a可以返回对象的引用,而a++一定要是返回对象的值。可想而知引用的开销当然比直接对对象进行操作要效率高很多,节省很多开销。 前置++和后置++存在本质上的区别: 前置++ 不会产生临时对象 后置++ 在返回时有一个临时对象的创建 在前置++和后置++ 效果相同的时候,最好使用前置++
相关文章推荐
- C++中,a++、a+=1、a=a+1、++a 有什么区别?以及效率问题
- C++中,a++、a+=1、a=a+1、++a 有什么区别?以及效率问题
- 关于oj上c++与g++的区别以及一些常见的问题
- MySQL乱码问题以及utf8mb4字符集---utf8mb4和utf8有什么区别? emoji表情与utf8mb4
- C++面试_堆栈的区别_堆栈的访问效率_关键字static的作用是什么_关键字const有什么含意
- C++ C# VC VC.net以及VC++有什么区别和联系?
- C++初探:c和c++的区别简述,以及编译器对代码做了什么?
- C++ C# VC VC.net以及VC++有什么区别和联系?
- C和C++中struct的区别是什么以及C++中struct和class的区别是什么
- Ajax 是什么?Ajax 的交互模型?同步和异步的区别?如何解决跨域问题?以及 HTTP状态码
- C++ C# VC VC.net以及VC++有什么区别和联系?
- 问题:c++中0,‘\0’,‘0’,"0"有什么区别
- C++中int,Uint,uint16等有什么区别以及用处
- Java与C++以及C语言各有什么区别
- c,c++,vc++,c++buider到底有什么区别和联系
- C语言和C++有什么区别
- [59] 测试技术常见的十一种问题之七:配置和兼容性测试的区别是什么?
- C++和C++bulider有什么区别
- C++和c有什么区别
- 问题: 什么是ASSERT()? ASSERT()和assert()的区别是什么?