2013年11月27日水曜日

C++ 継承概要

「継承」は、オブジェクト指向プログラミングの特徴の一つです。

継承とはそのクラスが持っているメンバを別のクラスに受け継がせることを
いいます。この時、元のクラスを基底クラス、受け継いだ方のクラスを
派生クラスといいます。

派生クラスでは継承したメンバは再定義せずに使うことができ、
さらに派生クラス内で新たに独自のメンバを定義することもできます。^^
また、基底クラスのことを親クラス、派生クラスのことを子クラスと
いうこともあります。

ここで、二つを親子とみなし、基底クラスのメンバを親が所有する家、家具と
すると、子どもが家と家具一式をすべて相続するのが継承といえます。

独自のメンバ定義は、新たに家具を増やすイメージでしょうか(^-^)
家を買って、全部自分で一から買い揃えるよりかはずっとお手軽です。

イマイチな例えかもしれませんが、これが継承のメリットです。

継承したモノを加工してみる?
基底クラスから継承したメンバ関数は、派生クラスで内容を再定義できます。
C++ではさらに、「派生クラスでメンバ関数を再定義すること」を前提とした
メンバ関数を定義できます。これを仮想関数といいます(^^)

また、純粋仮想関数というメンバ関数もあります。純粋仮想関数とは
クラスに呼び出し方だけが記述してあり、実体のない空のメンバ関数の
ことです。純粋仮想関数の中身は、派生クラスで再定義するときに
具体的な処理を書きます。

なぜこの様に面倒なことができる様になっているのでしょう(^^;)
時には、一般的なクラスで細かい所まで定義せず曖昧なまま進めたい事も
あるのです。純粋仮想関数はこんな時に使えるのです。

使いどころも含め、実に分かり難いので、次回以降でもっと詳しく
見ていきたいと思います。

今日の名言
過去を忘れ、他のことに一心に取り組む。これが私の悩み解決法である。
                           ジャック・デンプシー

済んだことは済んだことだ。過去を振り返らず、希望を持って新しい目標に向かうことだ。
                       ジョージ・C・マーシャル将軍

過ぎ去ったことは決して気にかけるな。これも経験の一つと考えて、悩みは忘れ去ろう。
目の前は常に困難だらけだ。振り返って過ぎ去った困難まで省みる必要はない。
                         ハーバート・フーヴァー

もし我々が、ただ手をこまねいて、家に閉じこもってくよくよ考えてばかりいれば、
ダーウィンのいわゆる「ウィバー・ギバー」なる卵をどっさり孵化させてしまう。
「ウィバー・ギバー」とは、人間の体を蝕み行動力と意志力を骨抜きにしてしまう。
時代遅れの幽霊にほかならぬ。
                           デール・カーネギー