C++传递参数时哪种情况下传递引用

 更新时间:2026年08月31日 09:44:56   作者:追光的蜗牛丿  
还在纠结C++函数参数该传值还是传引用?本文告诉你,int、float、指针等小类型直接传值更快更安全,而vector、Mat、大结构体、string等大对象必须用const引用避免拷贝,掌握这条工业级规则,写出高性能代码

小数据类型如 int、float、pointer 直接传值比传递引用更快、更安全、代码更简洁,只有大对象如vector、Mat、结构体、string等才需要传递引用(const T&)

下面介绍其核心原因:

先看大小

  • float:4个字节
  • 引用:本质上是指针,在64为系统中占用8个字节
  • 结论:穿float比传递引用更快、更省空间

传值更快

cpu处理小数据时的做法(如int、float):

1. 直接放进寄存器

2. 0内存访问

3. 速度极快

如果传递引用:

1. cpu必须去内存读取指针

2. 解引用

3. 多一次间接访问,相比之下更慢

工业级规则

* 小于等于8字节的类型,一律传值

* 大于8字节的类型,一律传递 const &

最终工业级铁律

1. int/float/double/指针:直接传值,不需要 &,不需要 const &

2. vector/Mat/大结构体/string:必须传递 const &,禁止传值,会拷贝,慢,费内存

​总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C语言 typedef的用法示例详解

    C语言 typedef的用法示例详解

    typedef是在C和C++编程语言中的一个关键字,作用是为现有的数据类型(int、float、char……)创建一个新的名字,目的是为了使代码方便阅读和理解,这篇文章主要介绍了C语言typedef的使用,需要的朋友可以参考下
    2023-06-06
  • 简要对比C语言中的truncate()函数与ftruncate()函数

    简要对比C语言中的truncate()函数与ftruncate()函数

    这篇文章主要介绍了C语言中的truncate()函数与ftruncate()函数的简要对比,注意其之间的区别,需要的朋友可以参考下
    2015-09-09
  • C++容器vector实现通讯录功能

    C++容器vector实现通讯录功能

    这篇文章主要为大家详细介绍了C++容器vector实现通讯录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 一文搞懂C语言中的文件操作

    一文搞懂C语言中的文件操作

    文件操作想必大家掌握的并不熟练,确实因为我们用的并不多,而本节内容能够让大家初步认识文件操作,从文件认识到文件使用,让我们对c语言文件操作有个初步的了解
    2022-11-11
  • C++函数pyrUp和pyrDown来实现图像金字塔功能

    C++函数pyrUp和pyrDown来实现图像金字塔功能

    这篇文章主要介绍了C++函数pyrUp和pyrDown来实现图像金字塔功能,如何使用OpenCV函数 pyrUp 和 pyrDown 对图像进行向上和向下采样,需要的朋友可以参考下
    2017-03-03
  • VSCode IDE 配置环境过程解析

    VSCode IDE 配置环境过程解析

    这篇文章主要介绍了VSCode IDE 环境配置,这里说的是仅使用 VSCode 创建C/CPP项目时的配置,VSCode 有代码提示, 定位来源和各种快捷键, 更适合日常编码工作,需要的朋友可以参考下
    2022-02-02
  • 深入探讨linux下进程的最大线程数、进程最大数、进程打开的文件数

    深入探讨linux下进程的最大线程数、进程最大数、进程打开的文件数

    本篇文章是对linux下进程的最大线程数、进程最大数、进程打开的文件数进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++中string替换所有指定字符串的方法

    C++中string替换所有指定字符串的方法

    这篇文章主要介绍了C++中string替换所有指定字符串的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Qt 事件过滤器的具体实现

    Qt 事件过滤器的具体实现

    事件过滤器,见名之意,就是将事件过滤一遍,将不需要的事件都清除掉,剩下需要的事件进行操作。本文详细的介绍了Qt 事件过滤器的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • vc中使用SendMessage自定义消息函数

    vc中使用SendMessage自定义消息函数

    这篇文章主要介绍了vc中使用SendMessage自定义消息函数的相关资料,需要的朋友可以参考下
    2015-06-06

最新评论