仮想関数とは何ですか

May 05, 2019 pm 04:54 PM
仮想関数

仮想関数とは、基本クラスで仮想として宣言され、1 つ以上の派生クラスで再定義されたメンバー関数、つまり、virtual キーワードによって変更されたメンバー関数を指します。形式は「仮想関数」です。 type 関数名(パラメータリスト) {関数本体}"。

仮想関数とは何ですか

基本クラスで仮想として宣言され、1 つ以上の派生クラスで再定義されたメンバー関数。使用形式は次のとおりです。 virtual 関数の戻り値の型 関数name (パラメーター リスト) {関数本体}; ポリモーフィズムを実現するには、基本クラス ポインターまたは派生クラスを指す参照を通じて、派生クラス内の同じ名前のオーバーライド メンバー関数にアクセスします。

簡単に言えば、virtual キーワードによって変更されたメンバー関数は仮想関数です。

まず第一に、関数を仮想関数として定義することは、その関数が実装されていない関数であることを意味するわけではないという概念を強調してください。仮想関数として定義され、基底クラスのポインタを使用してサブクラスの関数を呼び出すことができます。関数を純粋仮想関数として定義することは、その関数が実装されていないことを意味します。純粋仮想関数を定義する目的は、インターフェイスを実装して仕様として機能することであり、このクラスを継承するプログラマはこの関数を実装する必要があります。

例:

class A
{
public:
virtual void foo()
{
cout<<"A::foo() is called"<<endl;
}
};
class B:public A
{
public:
void foo()
{
cout<<"B::foo() is called"<<endl;
}
};
int main(void)
{
A *a = new B();
a->foo(); // 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!
return 0;
}
ログイン後にコピー

この例は、仮想関数の典型的なアプリケーションです。この例を通じて、仮想関数に関するいくつかの概念を理解できるかもしれません。これは、いわゆる「遅延バインディング」または「動的バインディング」に基づいており、クラス関数の呼び出しはコンパイル時ではなく、実行時に決定されます。コードを作成するときには、呼び出される関数が基本クラスの関数であるか派生クラスの関数であるかを判断できないため、この関数は「仮想」関数と呼ばれます。仮想関数は、ポインターまたは参照を使用した場合にのみポリモーフィックな効果を実現できます。

以上が仮想関数とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++ 関数のオーバーロードと仮想関数はどのように連携しますか? C++ 関数のオーバーロードと仮想関数はどのように連携しますか? Apr 26, 2024 am 10:09 AM

C++ での関数のオーバーロードを使用すると、異なるパラメーターを持つ同じ名前の関数の異なる実装を定義できます。また、仮想関数を使用すると、派生クラスで基本クラスの関数をオーバーライドしてポリモーフィズムを実現できます。関数のオーバーロードと仮想関数は連携して動作できます。基本クラスで仮想オーバーロード関数を設計することで、派生クラスは特定のパラメーターの組み合わせのバージョンのみをオーバーロードできるため、実際のケースでは異なる型の距離を計算するなど、より柔軟な多態性が提供されます。原点からの形。

C++ 関数のデバッグの詳細な説明: 仮想関数の問題をデバッグするには? C++ 関数のデバッグの詳細な説明: 仮想関数の問題をデバッグするには? May 02, 2024 pm 03:42 PM

仮想関数のデバッグ方法: ブレークポイントを設定してステップ実行し、assert() を使用して条件を確認し、デバッガー ツールを使用して動的型、関数スタックを確認し、仮想関数を再定義します。

C++ フレンド関数と仮想関数間の相互作用 C++ フレンド関数と仮想関数間の相互作用 Apr 16, 2024 pm 03:45 PM

C++ では、フレンド関数は仮想関数と対​​話するため、フレンド関数は仮想関数にアクセスし、派生クラスのフレンド関数を呼び出して基本クラスのプライベート メンバーにアクセスできます。この対話を使用して、継承階層に隠されたデータにアクセスしたり、多態性の動作を実装したりできます。

C++ で仮想関数を宣言して呼び出すにはどうすればよいですか? C++ で仮想関数を宣言して呼び出すにはどうすればよいですか? Apr 12, 2024 pm 04:03 PM

仮想関数は、派生クラスがその基本クラスのメンバー関数をオーバーライドできるようにするポリモーフィズム メカニズムです。 宣言: 関数名の前にキーワード virtual を追加します。呼び出し: 基本クラスのポインターまたは参照を使用して、コンパイラーは派生クラスの適切な実装に動的にバインドします。実際のケース: 基本クラス Shape とその派生クラス Rectangle および Circle を定義することにより、多態性における仮想関数の適用、面積の計算、形状の描画を示します。

C++ 関数は仮想宣言できますか?仮想関数の役割は何ですか? C++ 関数は仮想宣言できますか?仮想関数の役割は何ですか? Apr 19, 2024 pm 06:06 PM

C++ の仮想関数を使用すると、派生クラスが基本クラスから継承したメソッドを再定義してポリモーフィズムを実現できます。構文は次のとおりです。基本クラスで virtual キーワードを使用して仮想関数を宣言し、派生クラスでオーバーライドを使用してそれを再定義します。ポインターまたは参照を通じて仮想関数を呼び出すことにより、派生クラス オブジェクトは基本クラスの仮想関数を呼び出すことができます。仮想関数の主な機能には、ポリモーフィズムの実現、動的バインディングのサポート、および抽象化の提供が含まれます。

C++仮想関数の秘密が明らかに C++仮想関数の秘密が明らかに Apr 19, 2024 am 09:18 AM

仮想関数は動的バインディングを使用して実行時に呼び出される関数を決定し、ポリモーフィズムを実現します。その利点にはスケーラビリティと再利用性が含まれますが、オーバーヘッドと複雑さも生じます。仮想関数は、さまざまなタイプのオブジェクトのメソッドを統一された方法で実装するためによく使用されます。

C++ における仮想関数と純粋仮想関数の応用スキル C++ における仮想関数と純粋仮想関数の応用スキル Aug 22, 2023 am 11:33 AM

C++ の仮想関数と純粋仮想関数は、オブジェクト指向プログラミングを使用する多くのプログラマーによって一般的に使用されるツールです。これらを正しく使用することを前提とすると、プログラムの柔軟性と保守性が大幅に向上します。この記事では、仮想関数と純粋仮想関数のアプリケーション スキルについて説明し、いくつかの実践的な開発経験を共有します。 1. 仮想関数 1. 仮想関数とは何ですか?仮想関数は、ポリモーフィズムを実装するために使用される手法であり、これにより、クラスのメンバー関数を実行時に動的に決定できます。基本クラスのポインターまたは参照を使用して仮想関数が呼び出される場合、プログラムは

C++ 構文エラー: メンバー関数を仮想関数にすることはできません。どのように対処すればよいですか? C++ 構文エラー: メンバー関数を仮想関数にすることはできません。どのように対処すればよいですか? Aug 21, 2023 pm 09:03 PM

C++ はオブジェクト指向プログラミング言語であり、仮想関数は非常に重要な機能であり、サブクラスが基本クラス関数をオーバーライドしてポリモーフィズムを実現できるようになります。ただし、「エラー C3668: '関数': メンバー関数 (コンストラクターとデストラクターを除く) を仮想関数にすることはできません。」というエラー メッセージが表示されることがあります。このエラー メッセージは、C++ では、どのメンバー関数も仮想関数にできないことを意味します。 。では、この問題にどう対処すべきでしょうか?まず、このエラーが発生する理由を理解する必要があります

See all articles