ホームページ  >  記事  >  バックエンド開発  >  C++ 関数テンプレートと継承の間の連携?

C++ 関数テンプレートと継承の間の連携?

王林
王林オリジナル
2024-04-15 22:24:021182ブラウズ

機能的なテンプレートの継承により、テンプレート名を基本クラスとして指定することで、既存のテンプレートから新しいテンプレートを作成できます。継承と組み合わせることで、コードの再利用、柔軟性、拡張性などの利点が得られます。

C++ 函数模板与继承的协作关系?

#C 関数テンプレートと継承の間の協調関係

はじめに

関数テンプレート異なる型に対して同じ動作を行う関数を作成できます。継承により、基本クラスの特性を共有し、新しい機能を追加する新しいクラスを基本クラスから派生できます。これら 2 つの強力なメカニズムを組み合わせることで、柔軟で再利用可能なコードが作成されます。

関数テンプレートの継承

継承を通じて、既存の関数テンプレートから新しい関数テンプレートを作成できます。関数テンプレートの名前を基本クラスとして指定するだけです。例:

template<typename T>
void print_element(T element) {
  std::cout << element << std::endl;
}

// 从 print_element 继承的新函数模板
template<typename T>
void print_list(T list) {
  for (auto element : list) {
    print_element(element);
  }
}

実用的なケース

整数のリストを表すクラスを作成しましょう:

class IntegerList {
public:
  IntegerList(int size) {
    list = new int[size];
  }

  ~IntegerList() {
    delete[] list;
  }

  void add(int element) {
    list[size++] = element;
  }

private:
  int* list;
  int size = 0;
};

これで、関数テンプレートを使用できるようになります。への継承 整数のリストを出力する関数を作成します:

// 从 print_element 继承的函数模板
template<typename T>
void print_list(T list) {
  for (auto element : list) {
    print_element(element);
  }
}

IntegerList オブジェクトをパラメータとして渡して、print_list 関数を呼び出すことができます:

IntegerList myList(5);
myList.add(1);
myList.add(2);
myList.add(3);

print_list(myList);  // 输出:1 2 3

利点

  • コードの再利用: 関数テンプレートの継承により、既存のコードを書き直すことなく再利用できます。
  • 柔軟性: これにより、さまざまな型で動作する汎用関数を作成できます。
  • 拡張性: 既存の関数を変更せずに、新しい型をサポートするようにコードを簡単に拡張できます。

以上がC++ 関数テンプレートと継承の間の連携?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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