C++ 在函数内给变量起别名是什么意思?

void f(void){
int count=1;
int &cRef=count;
cRef++;

}
这个cRef的值和地址跟count值和地址的一样,这个cRef占用内存不?算个变量还是什么东西?
感谢回答,是不是相当于编译器编译后,count和cRef就没了,编译器自动为他们替换为同一变量名,并不降低程序的运行效率,别名只是给程序员看的?

程序编译后 cRef与count就区分不开了

c++独有的type& 命名方式

这里只是起到一个别名(alias)的作用

相当于一个内存地址上有两个不同的名字

也就是两个不同的变量名, 在使用效果上它们是完全等同的

没错, 编译后替换的当然都是同一内存地址。

alias 机制只是编译器的一种优化

作用是让程序员更简单的使用变量

像你举的这种例子很少见

这种形式经常在函数参数中出现

譬如 void function(type& T);形式

最大的好处就是可以直接改变变量的值

而在c时代中,则必须通过指针或者返回值来改变

如果我们来写一段变量交换值的函数代码

c中的:
void swap(int* a,int* b){
int t=*a;
*a=*b;
*b=t;
}

c++中的:
void swap(int& a,int& b){
int t=a;
a=b;
b=t;
}

总的来说,type&应用的挺多的,可以使代码简洁清晰不少.
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-04
  C++ 在函数内给变量起别名的意思:程序编译后 cRef与count就区分不开了,c++独有的type& 命名方式,这里只是起到一个别名(alias)的作用,相当于一个内存地址上有两个不同的名字,也就是两个不同的变量名,在使用效果上它们是完全等同的。编译后替换的是同一内存地址。
第2个回答  2010-04-13
起别名 就如起外号,例如 黑旋风 李逵,count 是 李逵,cRef 是 黑旋风。黑旋风++,也就是 李逵++。

目的是让 变量名 更有意义,让源程序更容易 阅读和理解。例如 count 是 计数器,cRef 是 参考计数(或别的意思,写程序的人知道)。

cRef 也是int变量,与count 等价,共享一个内存单元,cRef 增 1,count 也就 增 了 1。
int count=1;
int &cRef=count;
cRef++;
cout << count; // 输出是 2
第3个回答  2015-08-14
类似于一个人两个名字。管理同一块内存。
相似回答