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

WBOY
Lepaskan: 2024-04-15 12:48:01
asal
471 orang telah melayarinya

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, ...);
Salin selepas log masuk

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;
}
Salin selepas log masuk

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

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

在第一个示例中,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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan