c++中的引用(&)到底都有什么用处?
&据说有很多种用法,有传址传递,在面向对象中也能用作形参。貌似还有节约内存的用法,这个我学的不大好,请强人们给我讲一下,他的各种用法和原理,以及什么情况下用它,谢谢拉!...
&据说有很多种用法,有传址传递,在面向对象中也能用作形参。貌似还有节约内存的用法,这个我学的不大好,请强人们给我讲一下,他的各种用法和原理,以及什么情况下用它,谢谢拉!
展开
8个回答
展开全部
比如int f(int a){...}
当你如下调用时:
int b;
f(b);
编译器会把b的值赋给a,在函数体内操作a;
而如果函数定义为:int f(int& a){...}
当你调用时,没有这个赋值的过程,因为此时a是实参的别名,相当于直接操作了实参b;
从这个例子可以看到引用的两个特性:
1 节约空间,少了一个实参赋值给形参的过程
2 可以直接操作实参,而不是形参
你说的面向对象中的节约内存,就是第一个特性,因为类对象往往很大,如果赋值方法进行函数调用的话,会增加开销。
当你如下调用时:
int b;
f(b);
编译器会把b的值赋给a,在函数体内操作a;
而如果函数定义为:int f(int& a){...}
当你调用时,没有这个赋值的过程,因为此时a是实参的别名,相当于直接操作了实参b;
从这个例子可以看到引用的两个特性:
1 节约空间,少了一个实参赋值给形参的过程
2 可以直接操作实参,而不是形参
你说的面向对象中的节约内存,就是第一个特性,因为类对象往往很大,如果赋值方法进行函数调用的话,会增加开销。
展开全部
主要是参数传递时起作用,普通的参数传递,其实是传递了一份拷贝,如果参数比较复杂,比如大对象,那么产生的开销会很大;而且普通的参数传递,不能把更改回写,而引用传递可以改变参数的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int num = 0;//给num 分配了一个int型的内存空间,初始化为 0;
int &n = num;//没有分配内存空间,引用了一个变量名;
相当于给num 又起了一个别名叫 n;使用 n 和 num 是一样的;
int &n = num;//没有分配内存空间,引用了一个变量名;
相当于给num 又起了一个别名叫 n;使用 n 和 num 是一样的;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2008-10-13
展开全部
我也是半桶水,我就把它理解为指针,他有指针的一些优势,但和指针又有不同。
编译器会为指针分配空间,不会为引用分配空间。
比如调用函数,传递参数时,可以避免把实参复制给形参的消耗。
编译器会为指针分配空间,不会为引用分配空间。
比如调用函数,传递参数时,可以避免把实参复制给形参的消耗。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如你要传递一个实参 如果实参过大 为了避免复制就可以用引用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询