C ++関数のオーバーライド

C Function Overriding



この記事では、C ++プログラミング言語でオーバーライドする関数について説明します。 C ++はランタイムポリモーフィズムをサポートします。

関数のオーバーライドでは、子クラスは親クラスですでに定義されている関数を再定義します。







これにより、プログラマーは派生したクラス固有の機能を提供できます(基本クラスで定義されている場合でも)。



ここで、いくつかの例を見て、C ++の概念をオーバーライドする関数を理解します。



例-1

以下のサンプルコードでは、基本クラスと派生クラスの2つのクラスを定義しました。基本クラスには、メンバー関数、つまりdisp()があります。 Derived_ClassはBase_Classから継承されます。 disp()関数はBase_Classに存在し、Derived_Classで再定義されます。





main()関数では、Derived_Classのオブジェクト、つまりdが作成されます。次に、派生クラスオブジェクトでdisp()関数を呼び出すため、派生クラスの関数が呼び出されます。ここでは、基本クラスのバージョンは無視されます。以下の出力は、派生クラスの– disp()関数として表示されます。

#含む

名前空間stdを使用する;

//基本クラス
クラスBase_Class
{{
公衆
空所アベイルズ(()。
{{
費用<< 「基本クラスのdisp()関数。」 <<endl;
}

};

//派生クラス
クラスDerived_Classpublic Base_Class
{{
公衆
空所アベイルズ(()。
{{
費用<< 「派生クラスのdisp()関数」 <<endl;
}
};

int主要(()。
{{
Derived_Class d;
NS。アベイルズ(()。; //派生クラスオブジェクトのdisp()関数
戻る 0;
}



例-2

この例では、派生クラスオブジェクトを介して関数の基本クラスバージョンを意図的に呼び出す方法を説明します。派生クラスの関数定義では、スコープ解決演算子[::]を使用して、関数の基本クラスバージョンを呼び出します。

#含む

名前空間stdを使用する;

クラスBase_Class
{{
公衆
空所アベイルズ(()。
{{
費用<< 「基本クラスのdisp()関数。」 <<endl;
}

};

クラスDerived_Classpublic Base_Class
{{
公衆
空所アベイルズ(()。
{{
Base_Class:::アベイルズ(()。; // disp()の基本クラスバージョンを呼び出します
}
};

int主要(()。
{{
Derived_Class d;
NS。アベイルズ(()。;
戻る 0;
}

例-3

これは、関数のオーバーライドのもう1つの例です。この例では、親クラス(Animal)と2つの派生クラス(DuckとDog)を作成しました。基本クラス、つまりAnimalクラスには、メンバー関数sound()があります。

派生クラス/子クラス、つまりDogで、同じ関数、つまりsound()を再定義して、その基本クラス定義をオーバーライドしました。同様に、他の派生クラス、つまりDuckでは、同じ関数、つまりsound()を再定義しました。

main()関数で、DogのdogオブジェクトとDuckのduckを作成しました。したがって、犬とアヒルのsound()関数を呼び出すと、sound()関数の派生クラスバージョンが呼び出されます。以下に示すように、プログラムの出力を見ることができます。したがって、関数のオーバーライドを利用して、派生したクラス固有の関数を呼び出すことができます。

#含む

名前空間stdを使用する;

クラス動物
{{
公衆
空所(()。
{{
費用<< 「動物の音!」 <<endl;
}

};

//派生クラス–犬のクラス
クラス犬パブリックアニマル
{{
公衆
空所(()。
{{
費用<< 「犬の鳴き声-吠え声。」 <<endl;
}
};

//派生クラス–アヒルクラス
クラスダックパブリックアニマル
{{
公衆
空所(()。
{{
費用<< 「アヒルの音-クワクワク」 <<endl;
}
};


int主要(()。
{{
犬犬;
ダックダック;

犬。(()。; //犬の音()
アヒル。(()。; //アヒルの音()

戻る 0;
}

結論

この記事では、関数のオーバーライドについて説明しました C ++ 。 C ++言語は、ランタイムポリモーフィズムをサポートします。関数のオーバーライドは、C ++で実行時のポリモーフィズムを実現するのに役立ちます。この記事では、関数のオーバーライドの概念と、関数のオーバーライドを使用してランタイムポリモーフィズムを実現する方法について説明しました。