ではなぜコンストラクタが便利かと言えば、オーバーロードの必要がある時便利だったのね。
同じクラスが複数のコンストラクタを持つことをオーバーロードと言う。
インスタンスを生成するときにコンストラクタが呼び出される訳だけれど、インスタンスを配列に格納する時はデフォルトコンストラクタが呼び出されなくてはいけないし、インスタンスをコピーする時 -- 例えば関数の引数として渡される時 -- にはコピーコンストラクタが必要。まだ知らないけれど、他にもオーバーロードが必要な時はあると思う。
インスタンスの使い道に依って、異なった初期化をしなくてはならないケースがあるため、コンストラクタという仕組みが存在しているのです。
すっきりした。
ところで、ロベールさんのC++教室がキツイ。
第二部に入ってクラスを作り始めたんだけど、きっちりエラー処理を組み込むものだからソースが長い。
いや、エラー処理は重要なんだけれど、クラスだけ作って実行せず、次の章へすすんでしまうものだから理解が追いつかない。
頭からソースを読んでプログラムを理解する訓練、、、と思えば良いのかもしれないけれど、自分の頭は抽象的なものをそのまま飲み込めるほど良くないのです。
具体的な実行結果から遡行して、「ああ、このソースはこういう意味だったのか」と理解させて欲しい。
あと、一度説明された概念を自明の理として先へ進むので、頻繁に読み返す必要がありまして。
その割に、正直説明が短くて一章一章を完全に理解できていないような気が。
そう思うと、小林氏のページはクドいくらいで良かったのだなぁ、と思う。
それ以上に、WisdomSoftの赤音氏は漏れ無くキッチリ説明していて素晴らしかった、と。
結局のところ、やるなら徹底的に理解することが一番の近道なのだと思いました。
自分が教える立場になった時は、徹底的に教えようと思います。
PR