我是靠谱客的博主 眯眯眼大炮,最近开发中收集的这篇文章主要介绍C++Primer 6.2节——参数传递,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C++Primer 6.2节——参数传递

1、形参和实参的关系
①当形参是引用类型时,形参绑定在它对应的实参上,引用形参是它对应的实参的别名。
②当形参是非引用类型时,将实参的值拷贝给形参,则实参和形参是两个独立的对象。

2、传值参数
①传值参数:将实参的值拷贝给形参。
②函数对形参的所有操作都不会影响实参。
③指针形参:当形参是个指针时,实参也是个指针,将实参拷贝给形参,拷贝的是指针的值,形参和实参是两个不同的指针。

3、传引用参数
①通过使用引用形参,允许函数改变一个或多个实参的值。改变引用形参就能改变其对应的实参。
②当函数使用的是引用形参时,我们直接传入对象而非对象的地址。
使用引用避免拷贝
(1)原因:拷贝大的类类型的对象或容器对象占用的存储空间大,效率低,而且有的类类型不支持对象拷贝的操作。
(2)当类类型不支持对象拷贝的操作时,只能用引用类类型的对象进行操作。

4、const形参和实参
①当形参是顶层const时,顶层const作用于对象本身。
②当执行拷贝操作时,对象的顶层const会被忽略掉。即实参初始化形参时会忽略掉顶层const。
注意:因为顶层const在拷贝时会被忽略掉,所以在函数的声明或定义时,只有有无顶层const的区别的两个函数是一样的,因为传入的实参都可以被两个函数的形参接受。如
(1)void fnc(const int a);
(2)void fnc(int a);
所以这两个函数在本质是相同的,是不能同时存在的。

5、指针或引用形参与const
①底层const:指针const(如const in *)和常量引用(如const int )都是底层const。
②我们可以使用非常量来初始化一个底层const对象,但是反过来不行。

6、尽量使用常量引用
原因:
①把函数不会改变的形参定义成普通都引用,会误导程序员认为可以通过形参来改变实参的值。
最重要的一点:使用引用而非常量引用会极大限制了函数所能接受的实参类型。如
(1)不能const对象、字面值或者需要类型转换的对象传递给普通的引用形参。

最后

以上就是眯眯眼大炮为你收集整理的C++Primer 6.2节——参数传递的全部内容,希望文章能够帮你解决C++Primer 6.2节——参数传递所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部