C では、ポリモーフィズムは仮想関数と抽象基本クラスによって実現されます。仮想関数を使用すると、基本クラスの関数を派生クラスでオーバーライドできますが、抽象基本クラスには純粋な仮想関数が含まれるため、派生クラスに実装が強制されます。これにより、基本クラス ポインターを使用して派生クラス オブジェクトにアクセスし、オブジェクトの実際の型に基づいて適切なメソッドを呼び出すことにより、ポリモーフィック プログラミングが可能になります。
ポリモーフィズムはオブジェクト指向プログラミング (OOP) です。 ) ) を使用すると、オブジェクトが同じメッセージにさまざまな方法で応答できるようになります。 C では、仮想関数と抽象基本クラスを使用してポリモーフィズムを実現します。
定義: 仮想関数は、基本クラスで宣言され、派生クラスでのみ実装されるメンバー関数です。仮想関数が基本クラス ポインターを通じて呼び出される場合、派生クラスの実装が呼び出されます。
構文:
class Base { public: virtual void print() const; }; class Derived : public Base { public: virtual void print() const override; };
override
このキーワードは、基本クラスの仮想関数をオーバーライドしていることを示します。
定義: 抽象基本クラスは、少なくとも 1 つの純粋仮想関数を含む基本クラスです。純粋な仮想関数は定義されておらず、派生クラスによってのみ実装されます。
構文:
class Base { public: virtual void f() const = 0; };
各形状クラスに面積を計算する関数がある形状階層を考えてみましょう area()
メソッド。
基本クラス Shape:
class Shape { public: virtual double area() const = 0; };
派生クラス Circle および Rectangle:
class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} double area() const override { return M_PI * _radius * _radius; } private: double _radius; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : _width(width), _height(height) {} double area() const override { return _width * _height; } private: double _width, _height; };
Main 関数:
int main() { Shape* s1 = new Circle(5); Shape* s2 = new Rectangle(3, 4); std::cout << "Circle area: " << s1->area() << std::endl; std::cout << "Rectangle area: " << s2->area() << std::endl; return 0; }
出力:
Circle area: 78.5398 Rectangle area: 12
以上がC++ 仮想関数と抽象基本クラス: ポリモーフィック プログラミングの基礎を探るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。