Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kerjasama antara templat fungsi C++ dan warisan?

Kerjasama antara templat fungsi C++ dan warisan?

王林
王林asal
2024-04-15 22:24:021170semak imbas

Warisan templat berfungsi membolehkan kami mencipta templat baharu daripada templat sedia ada dengan menentukan nama templat sebagai kelas asas. Digabungkan dengan warisan, ia memberikan kelebihan penggunaan semula kod, fleksibiliti, kebolehlanjutan dan banyak lagi.

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

Kolaborasi antara templat fungsi C++ dan warisan

Pengenalan

Templat fungsi membolehkan kami mencipta fungsi dengan gelagat yang sama untuk jenis yang berbeza. Warisan membolehkan kami memperoleh kelas baharu daripada kelas asas yang berkongsi ciri kelas asas dan menambah fungsi baharu. Menggabungkan dua mekanisme berkuasa ini menghasilkan kod yang fleksibel dan boleh digunakan semula.

Warisan templat fungsi

Kita boleh mencipta templat fungsi baharu daripada templat fungsi sedia ada melalui pewarisan. Hanya nyatakan nama templat fungsi sebagai kelas asas. Contohnya:

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);
  }
}

Contoh praktikal

Mari kita buat kelas untuk mewakili senarai integer:

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;
};

Sekarang, kita boleh menggunakan warisan templat fungsi untuk mencipta fungsi yang mencetak senarai integer:

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

:IntegerList 对象作为参数,并调用 print_list

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

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

Kelebihan

  • Guna Semula Kod:Pewarisan templat fungsi membolehkan kami menggunakan semula kod sedia ada tanpa perlu menulisnya berulang kali.
  • Fleksibiliti: Ia membolehkan kami mencipta fungsi serba boleh yang berfungsi merentasi pelbagai jenis.
  • Kebolehlanjutan: Kami boleh melanjutkan kod dengan mudah untuk menyokong jenis baharu tanpa mengubah suai fungsi sedia ada.

Atas ialah kandungan terperinci Kerjasama antara templat fungsi C++ dan warisan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn