誕生日にもらった意外なもの

デフォルトコンストラクタ

デフォルトコンストラクタで分からないことがあります。
以下のコードです。

> template<class T1, class T2>
> struct pair
> {
> T1 first; // 1つ目の値
> T2 second; // 2つ目の値
>
> // デフォルトコンストラクタ
> pair() : first( T1() ), second( T2() ){}
>
> // 引数付きコンストラクタ
> pair(const T1& a, const T2& b) : first( a ), second( b ){}
> };

このコードの中の
pair() : first( T1() ), second( T2() ){}
で初期化子による初期化をしていると思うのですが「T1()」と「T2()」は具体的に
何をしているのでしょうか?自分の想像ではfirstとsecondに何か初期化の値を代入して初期化していると思うのですが何でしょうか?
なお、その次のコードの意味は分かります。
> pair(const T1& a, const T2& b) : first( a ), second( b ){}
これは、引数a,bを持っていてそれぞれfirstにaを代入してsecondにbを代入して初期化しているのですよね。

なお、このコードが掲載されているサイトはここです。
http://www.geocities.jp/ky_webid/cpp/library/011 …

A 回答 (1件)

>pair() : first( T1() ), second( T2() ){}


>で初期化子による初期化をしていると思うのですが「T1()」と「T2()」は具体的に何をしているのでしょうか?

firstを(T1の)デフォルトコンストラクタで初期化
secondを(T2の)デフォルトコンストラクタで初期化
です。

> pair(const T1& a, const T2& b) : first( a ), second( b ){}
>これは、引数a,bを持っていてそれぞれfirstにaを代入してsecondにbを代入して初期化しているのですよね。

もう少し正確に言えば、(定義されていれば)コピーコンストラクタで初期化です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2010/02/16 13:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!