Cpp クラス 継承 アップキャストのソースを表示
新しいページはコチラ
移動:
案内
,
検索
[[C PlusPlus#C++からの技術|C++]]に戻る <table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner"> <tr> <td style="width:1px;"></td> <td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++ クラス 継承 アップキャスト</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td> </tr> </table> ※このページでは[[C PlusPlus|C++]]にのみ存在する機能として、記事タイトルが<nowiki>C++ クラス 継承 アップキャスト</nowiki>になっています。<br /> <br /> == '''クラス 継承 アップキャスト''' == 継承は基底クラスの機能を派生クラスが引き継ぐというものでした。この関係を利用して、基底クラスのポインタが派生クラスのポインタを受け取れるというのがアップキャストです。キャストは役を割り当てるという意味で、出演者一覧の役当て表つまりはキャストがドラマのエンドロールに流れるのでもお馴染みの意味なのでしっくりきます。なにがアップなのか?というところでは、引っかかるものがあります。基底クラスではBaseといったり土台というような意味合いがつよく派生は上に乗っかってるクラスのようなイメージがありそうですが、派生クラスは基底クラスにぶら下がっているというイメージなら上へのキャストというのはしっくりくる。そういう意味でアップキャストです。 だから? 派生クラスのポインタ変数が基底クラスのポインタ変数へ受け渡すことが出来るということを意味しています。つまり派生→基底をアップと言っています。受け渡すは役割を割り当てるキャストだと言っています。なんで、そんなことが出来るん?という感じもします。 考えてみると、派生クラスは、基底クラスを引き継いでいるし、派生クラス独自の関数や変数を持っているから、基底クラスよりも機能が多いはずです。そうすると、派生クラスは、少なくとも基底クラスは含んでいる。だから、キャスト(割り当て)しても基底クラスポインタは、基底の部分がしっかりとあるので、キャストできる。派生クラスから基底クラスにキャストは出来ます。その逆は出来ません。派生クラスだけが持っている何だか知りえない何かがあるのに基底クラスのポインタは派生クラスのポインタになれない。そういうことなのです。 で、何の役にたつのだい?そのアップキャストやらは… 基底クラスが派生クラスに対して働きかけるイメージです。基底クラスが、派生クラスを選ぶ。基底クラスがいろいろな派生クラスと結びつくことができて、基底クラスが持っている動作と派生クラス1の動作をまとめた動作、基底クラスが持っている動作と派生クラス2の動作をまとめた動作、基底クラスが持っている動作と派生クラス3の動作をまとめた動作、…基底クラスが持っている動作と派生クラスnの動作をまとめた動作のように、基底クラスは動きを切り替えることが出来るという技術です。何にでもなれるという意味でアップキャストはポリモーフィズム(polymorphism=多相性・多態性・多様性)と呼ばれている働きを実現させるモノになっています。 継承において、派生クラスは、基底クラスを引き継いで利用する。アップキャストで基底クラスはいろいろぶら下がった派生クラス(派生クラスからは基底クラスが上でアップキャスト)を選んで、いろいろな機能を利用するという関係です。それは、派生クラスのポインタ変数が、基底クラスのポインタ変数に受け渡すという動作(アップキャスト)によって実現される。自分はいまだに上とか下とかという言い方に違和感を感じていますが、そういう名前が付けられたということは理解したし、納得したという感じです。いわせてみれば、自分が折れてやった。そういう偉そうな立場に立ってみた。そして、見下される。そういうことだ。そう、そういうことなんだ。 [[C PlusPlus#C++からの技術|C++]]に戻る
テンプレート:記事名の制約
(
ソースを閲覧
)
Cpp クラス 継承 アップキャスト
に戻る。
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ