概述
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节——参数传递所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复