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

    技术2022-07-12  69

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

    Processed: 0.010, SQL: 9