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

关于返回匿名对象的引用的有关问题,这么做会有危险么

2012-06-07 
关于返回匿名对象的引用的问题,这么做会有危险么?如题,直接贴代码:C/C++ code#include iostreamusing na

关于返回匿名对象的引用的问题,这么做会有危险么?
如题,直接贴代码:

C/C++ code
#include <iostream>using namespace std;class A{public:    A(): _x(0)          {}    A(int a) : _x(a)    {}    const A& operator+(const int a)  { return A(_x+a);}    const A& operator=(const A &a)   { return A(_x + a._x);}    int x()                          { return _x;}private:    int _x;};int main(){    A a(2);    A c = a + 2;    cout << c.x() << endl;    return 0;}


  类似return A(_x + a._x);这种返回有问题么?编译有warning,可以运行

[解决办法]
对于const引用,标准保证该引用的临时对象的生命期保持在该引用的有效期内。对于A c = a + 2; a + 2返回的const引用的生命期到末尾的分号处结束,即在该表达式语句结束前a + 2返回的const引用是有效的,并非在子表达式a + 2结束时结束,从而保证c得到有效的构造。

热点排行