c++のテンポラリオブジェクトについて質問です。

適当なclass Dateとそれらのコンストラクタ、デストラクタを定義したします。
もし
Date test(Date dt){処理}という関数を実行した場合、
引数、戻り値にはテンポラリオブジェクトが作成されると思います。
それらのテンポラリオブジェクトのコンストラクタ、デストラクタは、呼び出されますか?
適当なプログラムで試した所デストラクタしか呼び出されませんでした。

回答の条件
  • 1人20回まで
  • 登録:
  • 終了:2018/02/19 03:50:06

回答1件)

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154スマートフォンから投稿

引数や戻り値の一次オブジェクトを作成する際に呼び出されるのは、コピーコンストラクタです。
引数なしのデフォルトコンストラクタではありません。

class Date {
public:
  Date() {    // こっちじゃなくて
    ...
  }
  Date(const Date& o) {    // こっちが呼ばれる
    ...
  }

};

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません