C の仮想関数を使用すると、派生クラスが基本クラスから継承したメソッドを再定義してポリモーフィズムを実現できます。構文は次のとおりです。基本クラスで virtual キーワードを使用して仮想関数を宣言し、派生クラスでオーバーライドを使用してそれを再定義します。ポインターまたは参照を通じて仮想関数を呼び出すことにより、派生クラス オブジェクトは基本クラスの仮想関数を呼び出すことができます。仮想関数の主な機能には、ポリモーフィズムの実現、動的バインディングのサポート、および抽象化の提供が含まれます。
#C の仮想関数
はじめに
仮想関数は特殊な型です派生クラスが基本クラスから継承したメソッドを再定義できるようにするメンバー関数。これによりポリモーフィズムが可能になります。つまり、派生クラス オブジェクトを基本クラス オブジェクトと同じ方法で扱うことができます。構文
仮想関数は、virtual キーワードを使用して、基本クラスで宣言されます。
class Base { public: virtual void func() { /* ... */ } };派生クラス内、仮想関数は再定義できます:
class Derived : public Base { public: void func() override { /* ... */ } };仮想関数の呼び出しはポインターまたは参照を通じて完了するため、派生クラス オブジェクトは親クラスの仮想関数を呼び出すことができます:
Base* base = new Derived; base->func(); // 调用 Derived::func()
実用的なケース
次の例を考えてみましょう。class Shape { public: virtual double area() const = 0; }; class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} double area() const override { return _radius * _radius * 3.14; } double _radius; }; class Square : public Shape { public: Square(double side) : _side(side) {} double area() const override { return _side * _side; } double _side; }; int main() { Shape* shapes[] = {new Circle(5), new Square(4)}; double total_area = 0; for (Shape* shape : shapes) { total_area += shape->area(); } std::cout << "Total area: " << total_area << std::endl; }この例では、基本クラス
Shape が抽象関数
area() を定義し、派生クラス
Circle および
Square は独自の実装を提供します。 main 関数は、派生クラスのオブジェクトを指す
Shape ポインターの配列を作成し、仮想関数呼び出しを通じて合計面積を計算します。
関数
仮想関数の主な機能は次のとおりです:以上がC++ 関数は仮想宣言できますか?仮想関数の役割は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。