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

王林
リリース: 2024-04-15 22:24:02
オリジナル
1184 人が閲覧しました

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

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート