C++
Jikan(int h = 0, int m = 0, int s = 0) : hour(h), minute(m), second(s) {}
このコードは、Jikan
クラスのコンストラクターの定義です。コロン (:
) の後に続く部分は、初期化子リスト と呼ばれます。
解説
-
Jikan(int h = 0, int m = 0, int s = 0)
:- これは、
Jikan
クラスのコンストラクターの宣言です。 int h = 0, int m = 0, int s = 0
は、それぞれhour
、minute
、second
という名前の整数型の仮引数です。= 0
は、これらの仮引数のデフォルト値が0であることを示しています。つまり、コンストラクター呼び出し時にこれらの引数を省略した場合、デフォルト値の0が使用されます。
- これは、
-
: hour(h), minute(m), second(s)
:- これは、初期化子リストです。
- コロン (
:
) の後に、メンバ変数を初期化する式を記述します。 hour(h)
は、メンバ変数hour
を仮引数h
の値で初期化することを意味します。- 同様に、
minute(m)
はメンバ変数minute
をm
で、second(s)
はメンバ変数second
をs
で初期化します。
-
{}
:- これは、コンストラクターの本体です。
- この例では、初期化子リストでメンバ変数の初期化を行っているため、本体は空です。
初期化子リストの利点
-
効率性:
- 初期化子リストを使うと、メンバ変数の初期化を宣言と同時に行うことができます。
- コンストラクターの本体で代入を行うよりも効率的です。特に、
const
メンバ変数や参照メンバ変数の初期化は、初期化子リストでのみ可能です。
-
可読性:
- 初期化子リストを使うことで、メンバ変数の初期化がコンストラクターの宣言部分で明確になり、コードの可読性が向上します。
使用例
C++
#include <iostream>
class Jikan {
private:
int hour;
int minute;
int second;
public:
Jikan(int h = 0, int m = 0, int s = 0) : hour(h), minute(m), second(s) {}
void printTime() {
std::cout << hour << ":" << minute << ":" << second << std::endl;
}
};
int main() {
Jikan now; // デフォルト値で初期化 (0:0:0)
Jikan noon(12); // hour を 12 で初期化 (12:0:0)
Jikan meeting(14, 30); // hour を 14、minute を 30 で初期化 (14:30:0)
Jikan endTime(18, 0, 0); // hour を 18、minute を 0、second を 0 で初期化 (18:0:0)
now.printTime();
noon.printTime();
meeting.printTime();
endTime.printTime();
return 0;
}
この例では、Jikan
クラスのコンストラクターで初期化子リストを使用しています。main
関数では、様々な方法で Jikan
オブジェクトを生成し、printTime()
メソッドで時刻を表示しています。
まとめ
初期化子リストは、C++ のコンストラクターでメンバ変数を効率的に初期化するための重要な機能です。積極的に活用することで、より効率的で読みやすいコードを書くことができます。
0 件のコメント:
コメントを投稿