中国好声音home张博林:关于C++里的&

来源:百度文库 编辑:高校问答 时间:2024/04/27 15:52:05
#include<iostream>
using namespace std;
class alpha
{
private:
int data;
public:
alpha()
{}
alpha(int d)
{ data = d;}
void display()
{ cout << data;}
*** alpha operator = (alpha& a)
{
data = a.data;
cout << "\nAssignment operator invoked";
return alpha(data);
}
};
int main()
{
alpha a1(35);
alpha a2;
a2 = a1;
cout << "\na2="; a2.display();
alpha a3 = a2;
cout << "\na3="; a3.display();
cout << endl;
return 0;
}
大家请看有**的那一行,我发现那个&不用程序照样能正常运行.但是书本上但用了那个&,我想请问一下用与不用有什么区别??

alpha& a 严格来说应该写成alpha &a 表示这个参数是引用类型的参数,在LZ的程序里面,由于a没有作为左值出现,所以就目前=操作符的实现是不能看出区别,它的作用是确保操作符重定向内的实现代码对a的改变能传出函数外,如果去掉这个&,由于作用域的关系,你在函数里面对a作出的改变是不能影响函数外变量的.