C++で基本クラス関数をオーバーライドするにはどうすればよいですか?

王林
リリース: 2024-04-12 22:45:02
オリジナル
432 人が閲覧しました

C では、関数のオーバーライドにより、派生クラスが基本クラスの関数をオーバーライドして、その動作を拡張または変更できます。構文は次のとおりです。 同じ関数名を持つ 同じ関数シグネチャを持つ override キーワードを使用する

C++ 中如何覆盖基类函数?

#C## での関数書き換えに関する包括的なガイド#C では、関数のオーバーライドにより、派生クラスが基本クラスの関数をオーバーライドできます。これは、基本クラスの機能を拡張したり、その動作を変更したりするときに役立ちます。

構文

基本クラスの関数をオーバーライドするには、派生クラスの関数は次のとおりである必要があります。

基本クラスの関数と同じ名前を持つ必要があります。 class function
  • 同じシグネチャ (パラメータ リストと戻り値) を持つ
  • override
  • キーワードを使用する
  • たとえば、次のことを考慮してください。基本クラス:
class Base {
public:
    virtual void print() { std::cout << "Base class" << std::endl; }
};
ログイン後にコピー

print()

関数をオーバーライドするには、派生クラスで次の構文を使用できます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>class Derived : public Base { public: override void print() { std::cout &lt;&lt; &quot;Derived class&quot; &lt;&lt; std::endl; } };</pre><div class="contentsignin">ログイン後にコピー</div></div>

実用的なケース

Shape

基本クラスと Circle 派生クラスを検討します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>class Shape { public: virtual double area() { return 0; } }; class Circle : public Shape { public: double radius; override double area() { return 3.14 * radius * radius; } };</pre><div class="contentsignin">ログイン後にコピー</div></div>

main()

関数では、virtual を使用できます。これら 2 つのメソッドを呼び出すメソッド スケジューリング :<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>int main() { // 创建一个圆形对象 Circle circle; circle.radius = 5; // 通过基类指针调用派生类函数 Shape* shape = &amp;circle; double area = shape-&gt;area(); std::cout &lt;&lt; &quot;Area of the circle: &quot; &lt;&lt; area &lt;&lt; std::endl; return 0; }</pre><div class="contentsignin">ログイン後にコピー</div></div>Output:

Area of the circle: 78.5
ログイン後にコピー

以上がC++で基本クラス関数をオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート