2016-12-02 14 views
1

は、以下のコードを考えてみましょう一時的なオブジェクトへの結合:C++用のconst&

class Abc 
{ 
public: 
    Abc() { std::cout << " ABC::ABC\n"; } 
    Abc& doIT() { std::cout << " Abc::doIT\n"; return *this; } 
    ~Abc() { std::cout << " ABC::~ABC\n"; } 
}; 

使用方法:一時ABCは破壊され、APにバインドさない理由

const Abc& ap = Abc().doIT(); //After this line ap references garbage 

私の質問はありますか?

答えて

6

prvalueへの参照を直接バインドすると、が直接になります。
Abc().doIT()という式のタイプはではなく、Abc&(左辺参照)です。
これは価値がないため、生涯の延長は適用されません。