读书人

关于数据成员为引用类型的有关问题

发布时间: 2012-03-06 20:47:55 作者: rapoo

关于数据成员为引用类型的问题
源程序如下:
#include <iostream.h>
class Sample
{
public:
Sample(int &a):i(a){}
void Set(int a){i=a;}
int Get(){ return i;}
private:
int &i;
};
void main(void)
{
int a=0;
Sample c(a),d(a);
c.Set(10);
cout < <d.Get() < <endl;
}

输出结果是10
列位大虾,请问是为什么呢...

[解决办法]
Sample c(a),d(a);
相当与:c.i=a和d.i=a,也就是对象c和对象d的i数据成员都是对a的引用,可以理解为都指向同一个存储地址,那就a的存储地址。你调用c.Set(10);将c.i所指的地址的值改为10,也就是将a 的值改为10, 而d.i 也是指向a的,所以你调用d.get()输出的就是a的值了,也就是10;

读书人网 >C++

热点推荐