Cpp クラス 仮想関数 新しいページはコチラ
提供: yonewiki
(→クラス 仮想関数) |
|||
203行: | 203行: | ||
</syntaxhighlight2> | </syntaxhighlight2> | ||
− | + | 617行目の | |
<syntaxhighlight2 lang="cpp"> | <syntaxhighlight2 lang="cpp"> | ||
209行: | 209行: | ||
</syntaxhighlight2> | </syntaxhighlight2> | ||
− | + | ようにvirtualというキーワードを宣言の部分に書けば、仮想関数という扱いになり、基底クラスでは、存在しないかもしれない架空の関数としての振る舞いになり、アップキャストされている場合は派生クラスに同じ名前の関数があるはずだから、それを見に行くようになります。この存在しないかもしれない架空の扱いを仮想関数と呼んでいるのだと思います。基底クラスでは、ある機能が自分自身にも派生クラスにもあるべきだという意味で使われます。今回の場合は、それぞれのクラス、基底クラス、派生クラスの全てに独自の合計金額を出力する関数があって、それぞれで動きは違うけど、同じ目的をもった関数が作られています。仮想関数はこういう使い方をします。実際のプログラミングでは、このサンプルよりも驚くべき使われ方や画期的な使われ方がされていることの方が多いです。 | |
215行: | 215行: | ||
<span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">実行結果<!-- padding 上 右 下 左--> | <span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">実行結果<!-- padding 上 右 下 左--> | ||
− | <syntaxhighlight2 lang="text" line start= | + | <syntaxhighlight2 lang="text" line start=701> |
Constructor:CBaseInheritance(int,int) | Constructor:CBaseInheritance(int,int) | ||
Constructor:CDriveInheritance(int,int,int) | Constructor:CDriveInheritance(int,int,int) | ||
228行: | 228行: | ||
− | + | となります。が、ここでも、まだ、デストラクタの数がコンストラクタの数と一致せず、まだまだ残念な感じになっています。 | |