今回はオブジェクトの配列を初期化する方法
についての紹介になります(^^)
通常の変数と同様に、もちろんオブジェクトも
配列にすることができます。
初期化する場合は以下のようになります。
//まずはDateクラスの定義
class Date
{
public:
Date(int year, int month, int day)
{
m_year = year;
m_month = month;
m_day = day;
}
private:
int m_year;
int m_month;
int m_day;
};
int main(void)
{
//そしてDateクラスの2つのオブジェクトを宣言と同時に初期化
Date UseByDate[2] = { Date(2014, 1, 13), Date(2014, 2, 14) };
:
この場合は、Dateクラスの2つのオブジェクトが引数を3つ取る
コンストラクタで初期化されます(^-^)
初期化のバリエーションについて
オブジェクトの配列の初期化では、要素の途中まで
初期化するということもできます。
Date UseByDate[31] = { Date(2014, 1, 13), Date(2014, 2, 14) };
この場合、要素は31個ありますが、最初の2つだけが引数を3つ取る
コンストラクタが呼び出されます。
そして、残りの29個については、引数のないコンストラクタが呼び出されます。
また、コンストラクタの引数が一つだけの時は、引数の内容だけを
記述することもできます。
:
Date(const char *datestr){
cout << datestr << endl;
}
:
int main(void)
{
//もちろん従来のように書いても構いませんし
Date UseByDate1[2] = { Date("2014/03/15"), Date("2014/04/16") };
//引数の内容だけを記述してみたってのもありです
Date UseByDate2[2] = { "2014/03/15", "2014/04/16" };
:
いずれにしても、同じ内容で初期化されているというのが
分かるかと思います(^^)
今日の名言
一つ一つの問題の本質を正しくつかめ。仕事を分割して
適当に時間割りせよ。
ベンジャミン・フランクリン
人生の全体ばかりに気を取られて思い悩んではいけない。まだ自分の手元に
来るかどうかわからない重荷の数と性質を、一目で読み取りとろうとするな。
むしろ問題が起こるたびに、「この仕事の手に負えない個所はどこだろか」と
自問するのだ。この問いに正直に答えれば、自分でも赤面したくなるだろう!
次に思い出すべきことは、過去も未来も自分を押し潰すことはできない、自分を
押しつぶせるのは現在だけだ、ということである。その現在ですら、もし適当に
分割してそれぞれの大きさの範囲を決めたうえで、自分に問い直せば、
取るになりぬものとなる。
マルクス・アウレリウス