たとえば、ローカルオブジェクトを返すコンストラクタ内の関数を呼び出すクラスがあります。私はrvalue参照を使用してこのオブジェクトへのアクセスを取得しようとしています。関数でローカルに作成したオブジェクトをメモリにコピーせずに使用する方法は?
しかし、コンパイラは、参照メンバーが、建設が終了しても保持されない一時的なものに初期化されることを伝えます。
私はそれを取得しません。私は、関数のスコープ内に作成されたローカルオブジェクトは、関数のスコープ内にしか存在しないことを理解しています。スコープの終わりに達する - ローカルオブジェクトのデストラクタが呼び出されます。そして、ここで私はローカルオブジェクトでrvalue参照を初期化し、私はコンストラクタの本体にいる間、私はそれにアクセスできます。
誰かが説明することができますか、ここで何が起こっていますか?そして、ローカルオブジェクトを返し、それをメモリ内で動かすことなく、任意のクラスメンバーとして使用する方法がありますか?
"私はコンストラクタのボディにいるうちに" 'C(f())'は 'c'tor'ボディにありません。初期化リストにあります。 – sameerkn
参照先の参照先は何ですか?誰がメモリを所有し、所有者はそのメモリをどのように処分しますか? @ sameerkn、 –
?私はコンストラクタ本体でこのオブジェクトにアクセスできると書いています。明らかに、私は初期化リストでこれを初期化します。 –