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

关于返回类型是引用类型的有关问题

2012-02-15 
关于返回类型是引用类型的问题如果一个函数如下:int&fun(){int*vvnewintreturn*v}我的问题是,返回的类

关于返回类型是引用类型的问题
如果一个函数如下:
int&   fun()
{
    int   *v;
    v=new   int;
      return   *v;
}
我的问题是,返回的类型是引用的时候,是已经把v指向的空间引用给了返回值么?也就是说,引用是否已经被初始化了,初始化的对象就是v指向的实体,返回的是已经经过初始化的引用了?
如果这时还有个变量int   a;
fun()=a;
那这语句是不是把a的值赋给v指向的空间?还是这才是引用的初始化,把a跟引用绑定起来?

[解决办法]
回答你第二个问题,friend去掉就是成员函数了,跟其他成员没什么区别。成员函数重载是自己类或者继承类的函数重载,跟别的类没关系
[解决办法]
=============================
我的问题是,返回的类型是引用的时候,是已经把v指向的空间引用给了返回值么?也就是说,引用是否已经被初始化了,初始化的对象就是v指向的实体,返回的是已经经过初始化的引用了?
=============================
对的

=============================
如果这时还有个变量int a;
fun()=a;
那这语句是不是把a的值赋给v指向的空间?还是这才是引用的初始化,把a跟引用绑定起来?
=============================
这语句是把a的值赋给v指向的空间,并不是和a绑定,相当于:
int &ret=fun();//引用在函数返回时已经初始化
ret=a; //这里是赋值

楼主这样会造成内存泄漏,没有释放函数内部分配的内存。
int &ret=fun();
delete &ret;//需要显示delete释放

热点排行