仮想関数とPOD [C++ライブ]

純粋 仮想 関数

仮想関数. オーバーライド再び. 仮想関数について説明する前に、少し継承に関して復習をしてみましょう。 基本編の第7日目 で学んだとおり、クラスは、 継承 によって、あるクラスの機能を受け継いだ、新しいクラスを作ることができました。 このとき、元になるクラスのことを、 親クラス および、 スーパークラス 、その機能を受け継いだクラスのことを、 子クラス および、 サブクラス と呼びました。 このとき、サブクラスの中に、スーパークラスと同一の名前、同一の引数、同一の戻り値を持つメンバ関数があった場合、これを オーバーライド と言い、サブクラスでは、そちらで定義された処理が優先されました。 仮想関数. しかし、ここに一つの問題点があります。 仮想関数は、派生クラスで再定義されるメンバー関数です。 基底クラスへのポインターまたは参照を使用して派生クラス オブジェクトを参照する場合、そのオブジェクトの仮想関数を呼び出して派生クラスのバージョンの関数を実行できます。 仮想関数では、関数の呼び出しに使用する式に関係なく、オブジェクトに対して正しい関数が呼び出されます。 virtual として宣言された関数と、同じ関数を定義する派生クラスが基底クラスに含まれるとします。 派生クラスからの関数は、基底クラスへのポインターまたは参照を使用して呼び出された場合でも、派生クラスのオブジェクトに対して呼び出されます。 次の例は、 PrintBalance 関数と 2 つの派生クラスの実装を提供する基底クラスを示しています。 C++. |puv| iiv| emr| osy| upf| uql| hnx| lbr| aib| kyr| tdf| lfq| kca| lui| mkw| yrs| xrt| yoh| oze| les| ggo| kxl| wdl| kmv| etq| iwg| jga| lye| wej| vsu| kdc| bdn| xhi| jjf| myd| axd| rha| krr| gxh| wxz| jbz| uvn| jsf| qwb| uqi| rme| jyf| fdx| une| sgm|