ホームページ  >  記事  >  バックエンド開発  >  STL での C++ 仮想関数の適用: コンテナーのポリモーフィックな性質を明らかにする

STL での C++ 仮想関数の適用: コンテナーのポリモーフィックな性質を明らかにする

WBOY
WBOYオリジナル
2024-04-28 15:09:011072ブラウズ

STL コンテナは仮想関数を使用してポリモーフィズムを実現し、基本クラス ポインターが派生クラス メソッドを呼び出すことができるようにします。特定のアプリケーションには、さまざまな種類のオブジェクトの動的なバインディングとストレージを実現するために、デストラクターと操作メンバー関数 (operator[]、push_back()、erase() など) が含まれます。

C++ 虚拟函数在 STL 中的应用:揭秘容器的多态本质

#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 サイトの他の関連記事を参照してください。

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