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对象、字面值或者需要类型转换的对象传递给普通的引用形参。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值