1.定义
按值传递:C++中参数传递的缺省初始化方法是把实参的值拷贝到参数的存储区中。引用传递:函数知道实参在内存中的位置,因而能够改变它的值或取它的地址。2.应用
下面两种情况(2.1,2.2)适合用按引用传递,不适合按值传递。2.1当大型的类对象作为参数传递时。原因:如果按值传递,将分配对象并拷贝到栈中的时间和空间开销很大。按引用传递,函数可以访问被指为实参的类对象,而不必在函数的活动记录中拷贝它。eg2.1:Class Huge{public:double stuff[1000]}extern int calc(const Huge &);int main(){Huge table[1000];//...初始化tableint sum=0;for (int ix=0;ix<1000;++ix)//函数calc()将指向Huge类型的数组元素指定为实参。sum+=calc(table[ix]);//...}2.1.1有人希望用引用参数以避免拷贝用作实参的大型类对象,又同时希望防止函数修改实参的值,一个不错的方法是把参数声明为const型的引用。见eg2.1。2.2当实参的值必须被修改时。如,常见的swap()函数,示例略。
2.3通过引用参数向主调函数返回额外结果。
2.4其他:指针的引用。程序员可以修改指针本身,而不是指针引用的对象。
3 相关概念
运行栈:所有的程序都使用在程序运行栈中分配的存储区。
活动记录:函数的存储区被称为活动记录。
-------------------参考《c++primer中文版7.3》
引用参数
最新推荐文章于 2023-07-21 23:05:13 发布