忍者ブログ

2024-05-13 14:39

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2013-09-17 03:27

コンストラクタってべんり

最初にJavaをいじった時、コンストラクタの存在意義を理解できなかったのです。
曰く「コンストラクタはメンバ変数の初期化を保証してくれます」。
変数の初期化が重要です、忘れないでね。と今更言われても、別にクラスに限らずいつだって重要な事だし、開発者が気をつけるべき事でしかない、と思ったわけです。
ポインタの初期化などは忘れるとエラーが怖いけど、だからと言って安全機構が組み込まれているわけでは無い。
ではなぜコンストラクタが便利かと言えば、オーバーロードの必要がある時便利だったのね。

同じクラスが複数のコンストラクタを持つことをオーバーロードと言う。
インスタンスを生成するときにコンストラクタが呼び出される訳だけれど、インスタンスを配列に格納する時はデフォルトコンストラクタが呼び出されなくてはいけないし、インスタンスをコピーする時 -- 例えば関数の引数として渡される時 -- にはコピーコンストラクタが必要。まだ知らないけれど、他にもオーバーロードが必要な時はあると思う。
インスタンスの使い道に依って、異なった初期化をしなくてはならないケースがあるため、コンストラクタという仕組みが存在しているのです。
すっきりした。

ところで、ロベールさんのC++教室がキツイ。
第二部に入ってクラスを作り始めたんだけど、きっちりエラー処理を組み込むものだからソースが長い。
いや、エラー処理は重要なんだけれど、クラスだけ作って実行せず、次の章へすすんでしまうものだから理解が追いつかない。

頭からソースを読んでプログラムを理解する訓練、、、と思えば良いのかもしれないけれど、自分の頭は抽象的なものをそのまま飲み込めるほど良くないのです。
具体的な実行結果から遡行して、「ああ、このソースはこういう意味だったのか」と理解させて欲しい。

あと、一度説明された概念を自明の理として先へ進むので、頻繁に読み返す必要がありまして。
その割に、正直説明が短くて一章一章を完全に理解できていないような気が。
そう思うと、小林氏のページはクドいくらいで良かったのだなぁ、と思う。
それ以上に、WisdomSoftの赤音氏は漏れ無くキッチリ説明していて素晴らしかった、と。
結局のところ、やるなら徹底的に理解することが一番の近道なのだと思いました。
自分が教える立場になった時は、徹底的に教えようと思います。

PR

この記事にコメントする

Name
Title
Mail
URL
Comment
Pass
Pictgram
Vodafone絵文字 i-mode絵文字 Ezweb絵文字

カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

プロフィール

HN:
AJ.yoshimi
HP:
性別:
男性

バーコード

ブログ内検索