C++中按引用传递参数的好处有哪些

 更新时间:2024年01月01日 09:58:26   作者:doubleslow;  
这篇文章主要介绍了C++中按引用传递参数的好处有哪些,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

C++按引用传递参数的好处

pass by reference

对于数组和结构这种大的数据,按值传递(pass by value)需要创建副本,占内存费时间,使用引用就只传地址,和按指针传递一样,但是使用起来又比指针简单安全,就是在使用原数据。

对于unique_ptr智能指针模板类,它只允许源指针是临时右值时候的赋值,所以如果实参不是临时右值,按值传递就会成为非法赋值,编译器报错。

示例

#include <iostream>
#include <string>
#include <memory>
#include <vector>
#include <algorithm> //for_each函数
using std::string;
using std::cout;
using std::cin;
using std::endl;
std::unique_ptr<int> make_int(int n)
{
	return std::unique_ptr<int> (new int(n));//返回int的智能指针,用传入的参数n初始化
}
void show(std::unique_ptr<int>  & a)//这里必须按引用传递,因为如果按值传递
//那么就要用一个非临时右值作为a的实参,对于unique_ptr类是不允许的
{
	cout << *a << ' ';
}
int main()
{
	int size = 5;
	std::vector<std::unique_ptr<int>> vp(size);
	for (int i=0;i<size;++i)
		vp[i] = make_int(rand() % 1000);
	vp.push_back(make_int(rand() % 1000));//可以调用成功是因为参数是一个临时右值
	for_each(vp.begin(), vp.end(), show);
	return 0;
}

41 467 334 500 169 724
Process returned 0 (0x0)   execution time : 0.329 s
Press any key to continue.

总结

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

相关文章

  • C++中指针的数据类型和运算相关知识小结

    C++中指针的数据类型和运算相关知识小结

    这篇文章主要介绍了C++中指针的数据类型和运算相关知识小结,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C++编程异常处理中try和throw以及catch语句的用法

    C++编程异常处理中try和throw以及catch语句的用法

    这篇文章主要介绍了C++编程异常处理中try和throw以及catch语句的用法,包括对Catch块的计算方式的介绍,需要的朋友可以参考下
    2016-01-01
  • C语言中的BYTE和char深入解析

    C语言中的BYTE和char深入解析

    在C语言中,字符(character)这个术语具有两个层次上的含义:书写源程序的字符和程序处理的字符
    2013-10-10
  • 详解C语言中symlink()函数和readlink()函数的使用

    详解C语言中symlink()函数和readlink()函数的使用

    这篇文章主要介绍了详解C语言中symlink()函数和readlink()函数的使用,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C++中对象与类的详解及其作用介绍

    C++中对象与类的详解及其作用介绍

    这篇文章主要介绍了C++中对象与类的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • C++使用cuBLAS加速矩阵乘法运算的实现代码

    C++使用cuBLAS加速矩阵乘法运算的实现代码

    这篇文章主要介绍了C++使用cuBLAS加速矩阵乘法运算,将cuBLAS库的乘法运算进行了封装,方便了算法调用,具体实现代码跟随小编一起看看吧
    2021-09-09
  • C++调用C接口的实现示例

    C++调用C接口的实现示例

    这篇文章主要介绍了C++调用C接口的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • C++实现AVL树的基本操作指南

    C++实现AVL树的基本操作指南

    AVL树是高度平衡的而二叉树,它的特点是AVL树中任何节点的两个子树的高度最大差别为1,下面这篇文章主要给大家介绍了关于C++实现AVL树的相关资料,需要的朋友可以参考下
    2022-01-01
  • C语言基础知识点指针的使用

    C语言基础知识点指针的使用

    这篇文章主要介绍了C语言基础知识点指针的使用,下面文章将让我们掌握指针的概念和用法、指针与数组之间的关系、指针指向的指针、如何使用指针变量做函数参数等更多相关内容,需要的小伙伴可以参考一下
    2022-03-03
  • C语言实现循环队列

    C语言实现循环队列

    这篇文章主要为大家详细介绍了C语言实现循环队列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07

最新评论