Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan templat kelas dalam templat fungsi C++?

Bagaimana untuk menggunakan templat kelas dalam templat fungsi C++?

WBOY
WBOYasal
2024-04-15 12:48:01406semak imbas

C++ 函数模板中的类模板是如何使用的?

Templat Kelas dalam Templat Fungsi C++

Templat fungsi C++ menyedari templat kelas dan menggunakannya sebagai jenis parameter. Ini membolehkan anda mencipta fungsi generik yang berfungsi dengan pelbagai jenis dan struktur data.

Syntax

template<typename T>
void func(const T& arg1, const T2& arg2, ...);

di mana:

  • T ialah templat jenis parameter fungsi. T 是函数参数的类型模板。
  • arg1, arg2 及后续参数是函数的实际参数。

实战案例

考虑一个打印任何类型的一对值的函数:

template <typename T1, typename T2>
void print_pair(const T1& a, const T2& b) {
  std::cout << a << " " << b << std::endl;
}

我们可以将这个函数模板应用于不同的类型组合:

int main() {
  print_pair(1, 2.5);  // 打印整数和浮点数
  print_pair("Hello", "World");  // 打印字符串
  return 0;
}

在第一个示例中,T1 被推导为 intT2 被推导为 double。在第二个示例中,T1T2 都被推导为 std::string

arg1, arg2 dan parameter seterusnya ialah parameter sebenar fungsi tersebut.

Contoh Praktikal

    Pertimbangkan fungsi yang mencetak sepasang nilai mana-mana jenis:
  • rrreee Kami boleh menggunakan templat fungsi ini pada kombinasi jenis yang berbeza: rrreee
  • Dalam contoh pertama, T1 disimpulkan kepada int dan T2 disimpulkan kepada double. Dalam contoh kedua, kedua-dua T1 dan T2 disimpulkan kepada std::string.
  • Kelebihan
  • Menggunakan templat fungsi daripada templat kelas mempunyai kelebihan berikut:
🎜Kebolehgunaan Semula Kod: 🎜Tidak perlu menulis berbilang fungsi untuk setiap jenis data. 🎜🎜🎜Universality: 🎜Fungsi boleh digunakan pada mana-mana jenis data yang memenuhi keperluan templat jenis. 🎜🎜🎜Tingkatkan kebolehbacaan kod: 🎜Kurangkan kod pendua dan tingkatkan kebolehbacaan dan kebolehselenggaraan kod. 🎜🎜

Atas ialah kandungan terperinci Bagaimana untuk menggunakan templat kelas dalam templat fungsi C++?. 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