たまたま、この本を読み始めました。
新・明解C++で学ぶオブジェクト指向プログラミング | ||||
|
C/C++ についてはひと通り理解しているつもりですが、復習も兼ねて、読み続けてみたいと思います。ただやはりなかなかのボリュームで、ただ読んでいるだけでは忘れていくばかりですので、自分のメモとして書いていきます。他の人には全く役に立たないと思いますがご了承ください。
不定期更新です。
新・明解 C++で学ぶオブジェクト指向プログラミング
第1章 クラスの基礎
*現実の世界からプログラムの世界への投影、
・まとめるべきものは、まとめる。
・本来まとまっているものは、まとまったままにする。
*クラス定義はあくまで型の宣言であり、タコ焼きの型。
そのクラス型の実体であるオブジェクトが、型から作られた本物のタコ焼き。
*すべてのデータメンバは非公開とするのが原則。
データメンバを外部から保護した上で、メンバ関数とうまく連携させることをカプセル化という。
*コンストラクタの役割は、オブジェクトを確実かつ適切に初期化すること
*ヘッダ部分(*.h)と、実装部の分離
ヘッダはクラスの仕様書である。
利用者はヘッダをインクルードする。だから、ヘッダ内に using 指令を置くとインクルードするファイルにまで影響するから入れないほうがよい。
(感想)
オブジェクト指向プログラムの個人的な過去の学習経緯として、ハードウェア検証言語である Vera から入って、その後 C/C++ にさかのぼったという、ちょっとおかしな経緯になってました。なので、C でいう構造体 Struct との比較みたいなのはあまり感じなかったのですが、 C を先に使ってるひとには、Struct のなかに task が入ってて変な感じ、というクラス定義の印象をもたれるかもしれません。
C++ のクラスとオブジェクトは、Verilog のモジュール宣言とそのインスタンスみたいなものですね。