首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-06 
关于数据成员为引用类型的问题源程序如下:#include iostream.hclassSample{public:Sample(int&a):i(a){}

关于数据成员为引用类型的问题
源程序如下:
#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;

热点排行