2016-03-24 5 views

答えて

3

はありません、それは安全ではありませんが、次の例を考えてみましょう。こうすると、ぶら下がっている参照が作成されます。

+0

'm_s'を' const string& 'にすると安全でしょうか?私は、参照とconst参照が関係する、異なる生涯の拡張規則があることを知っています。 – Danra

+0

@ダナラじゃないでしょうか。たとえconst修飾されていても、ぶら下がっている参照であり続けるでしょう。 – 101010

+0

好奇心の席から、元のコードがぶら下がっている参照を作成しない*という状況はありますか? – Danra

2

いいえ、安全ではありません。また、メンバのconst参照は一時的なライフタイムを延長しません(オプションでもありません)。代わりにあなたがするべきことは一時的なものから値を構成して、それをあなたのクラスに "吸収する"ことです:

class C { 
public: 
    C(string&& s) : m_s{std::move(s)} {} 
private: 
    string m_s; 
}; 
関連する問題