STL コンテナは仮想関数を使用してポリモーフィズムを実現し、基本クラス ポインターが派生クラス メソッドを呼び出すことができるようにします。特定のアプリケーションには、さまざまな種類のオブジェクトの動的なバインディングとストレージを実現するために、デストラクターと操作メンバー関数 (operator[]、push_back()、erase() など) が含まれます。
#STL での C 仮想関数の適用: コンテナーのポリモーフィックな性質を明らかにする
序文
STL (Standard Template Library) は、さまざまなデータ構造とアルゴリズムを提供する C の強力なコンテナ ライブラリです。 STL では、コンテナの動的なポリモーフィズムを実現するために仮想関数が広く使用されています。この記事では、STL における仮想関数のアプリケーションを詳しく掘り下げ、実際のケースを通じてその役割を示します。
仮想関数の概要
仮想関数は C のポリモーフィックな機能であり、派生クラスのオブジェクトが基本クラスのポインターまたは参照を通じて独自のオブジェクトを呼び出すことができるようになります。実装方法。これは、派生クラス オブジェクトがその基本クラス オブジェクトのように動作し、基本クラス オブジェクトとして扱われることを意味します。
STL での仮想関数の適用
STL のコンテナ (ベクトル、リスト、マップなど) はすべて仮想関数を使用して多態性を実現します。具体的には、デストラクター内の仮想関数と、operator[]、push_back()、erase() などの一部の操作メンバー関数を宣言します。
実際のケース: 動的バインディングと派生クラス コンテナ
STL における仮想関数の役割を示すために、Base という名前の基本クラスと 2 つの Derived1 を作成します。および Derived2 は派生クラスです。
class Base { public: virtual ~Base() { }; virtual void print() const { cout << "Base" << endl; }; }; class Derived1 : public Base { public: virtual void print() const override { cout << "Derived1" << endl; }; }; class Derived2 : public Base { public: virtual void print() const override { cout << "Derived2" << endl; }; };
次に、ベクトル127b8e7a8005b7ca155b7968ef03abecを作成し、それにBase、Derived1、およびDerived2オブジェクトを追加します。
vector<Base*> vec; vec.push_back(new Base()); vec.push_back(new Derived1()); vec.push_back(new Derived2());
次に、ベクトルを反復処理して、各オブジェクトの print() メソッドを呼び出しましょう。動的バインディングを使用しているため、基本クラス ポインターは派生クラス オブジェクトのメソッドを自動的に呼び出して、多態性の方法でオブジェクトの型を出力できます。
for (Base* obj : vec) { obj->print(); }
出力:
Base Derived1 Derived2
出力からわかるように、print() メソッドが正しく呼び出され、派生クラスの型が出力されます。これは、仮想関数が STL でコンテナーポリモーフィズムを実装する方法を示しています。
#結論
仮想関数は、STL でコンテナーのポリモーフィズムを実現するための重要なメカニズムです。 STL コンテナは、基本クラス ポインタが派生クラス メソッドを呼び出せるようにすることで、さまざまな型のオブジェクトを動的に格納および操作できます。このポリモーフィズムにより、STL はスケーラブルで保守可能なコードの開発において非常に強力になります。以上がSTL での C++ 仮想関数の適用: コンテナーのポリモーフィックな性質を明らかにするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。