当前位置: 首页 > news >正文

面试题查漏补缺 i++和 ++ i哪个效率更高

i ++ 和 ++i 哪个效率更高?

在这里声明,简单地比较前缀自增运算符和后缀自增运算符的效率是片面的,因为存在很多因素影响这个问题的答案。首先考虑内建数据类型的情况:如果自增运算表达式的结果没有被使用,而是仅仅简单地用于增加一员操作数,答案是明确的,前缀法和后缀法没有任何区别,编译器的处理都应该是相同的,很难想象得出有什么编译器实现可以别出心裁地在二者之间制造任何差异。我们看看下面这个程序。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1)++i 返回对象的引用;

(2)i++ 总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数,

导致在大对象的时候产生了较大的复制开销,引起效率降低。因此使用自定义类型(注意不是指内建类型)的时候,

应该尽可能地使用前缀式递增或递减。
下面代码可以展示两者的区别


#include<iostream>
using namespace std;
class Integer {
public:Integer(long data) :m_data(data) {}Integer& operator++() {	//前置版本,返回引用cout << " Integer::operator++() called!" << endl;m_data++;return *this;}Integer operator++(int) {	//后置版本,返回对象的值cout << " Integer::operator++(int) called!" << endl;Integer temp = *this;m_data++;return temp;	//返回this对象的旧值}
private:long m_data;
};void main(void)
{Integer x = 1;	//call Integer(long)++x;	//call operator++()x++;	//call operator++(int)
}
http://www.lryc.cn/news/155238.html

相关文章:

  • Docker的数据管理(持久化存储)
  • 定时脚本自动自动将文件push到git
  • 025: vue父子组件中传递方法控制:$emit,$refs,$parent,$children
  • 使用js搭建简易的WebRTC实现视频直播
  • LeetCode 2707. Extra Characters in a String【动态规划,记忆化搜索,Trie】1735
  • 设计模式行为型-模板模式
  • 9.3.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-车道线检测
  • django.core.exceptions.AppRegistryNotReady: Apps aren‘t loaded yet.
  • 【C#】C#调用进程打开一个exe程序
  • 宝塔面板定时监控和重启MySQL数据库(计划任务)
  • Beats:安装及配置 Metricbeat (二)- 8.x
  • Redis之哨兵模式解读
  • 题目:2644.找出可整除性得分最大的整数
  • 报错:axios 发送的接口请求 404
  • 三年前端还不会配置Nginx?刷完这篇就够了
  • blender 场景灯光基础设置
  • 如何查看 SQLyog 中数据库连接信息中的密码
  • 【SpringSecurity】八、集成图片验证码
  • 【本地代码问题】启动程序,报错:java.lang.IllegalArgumentException: No selectors
  • 手写RPC框架--4.服务注册
  • oracle 解锁表
  • 使用Dbeaver连接GaussDB
  • WSL使用技巧 / 虚拟机对比
  • vuex_cart案例
  • Linux系统的安装
  • 微服务设计和高并发实践
  • 2023年高教社杯数学建模思路 - 案例:粒子群算法
  • Tomcat 集群介绍
  • Windows右键添加用 IDEA 打开
  • Golang 中return和defer执行先后顺序