掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
テンポラリオブジェクトに直接介入するには (ID:51391)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつもお世話になっております 下記のような記述をした場合 MYCLASS operatir+(MYCLASS &a, MYCLASS &b){ MYCLASS ret; ・・・・ // a + b を処理し ret に格納 return ret } return ret のところで ret のコピー(テンポラリオブジェクト?)が作成され ( MYCLASS(MYCLASS &x) で定義されたコンストラクタが走ります) コピーが返値として 返ります ここで コピー を作成するのは無駄なので いずれ 返値になるであろう テンポラリオブジェクト を先に生成し a + b の結果を格納して 返してやる方法はないでしょうか MYCLASS& operatir+(MYCLASS &a, MYCLASS &b){ MYCLASS *ret = new MYCLASS(); ・・・ return *ret; } だと コピーは作成されませんが どこかのタイミングで delete が必要になるんですよね〜 MYCLASS a, b, c; a = b + c; とかやったら どこを delete してよいものやら・・・
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.