Instasiasi dan penjanaan templat fungsi C++

PHPz
Lepaskan: 2024-04-14 10:21:02
asal
548 orang telah melayarinya

Instasiasi templat fungsi membolehkan pelaksanaan fungsi jenis khusus dijana untuk jenis yang berbeza apabila dipanggil. Pengkompil melakukan instantiasi secara automatik, tetapi ia juga boleh dijana secara eksplisit. Templat fungsi menyediakan keupayaan untuk membandingkan objek daripada jenis yang berbeza, seperti membandingkan int dan rentetan.

C++ 函数模板的实例化和生成

C++ Function Template Instantiation and Generation

Function Templates ialah ciri C++ berkuasa yang membolehkan anda mencipta kaedah yang boleh diparameterkan untuk jenis yang berbeza. Apabila anda memanggil templat fungsi jenis tertentu, pengkompil menjana contoh fungsi khusus untuk jenis itu.

Instantiation

Pengkompil C++ secara automatik melaksanakan instantiasi templat fungsi apabila diperlukan. Apabila anda menggunakan contoh templat fungsi jenis tertentu, pengkompil menghasilkan versi khusus jenis baharu. Sebagai contoh, kod berikut menunjukkan cara untuk membuat instantiate std::max template:

int main() {
  int a = 3;
  int b = 5;
  int max_value = std::max(a, b); // 实例化 std::max 模板以接受 int 类型
}
Salin selepas log masuk

Explicit generation

Dalam sesetengah kes, anda mungkin perlu menjana secara eksplisit contoh templat fungsi, yang boleh dilakukan dengan menggunakan kata kunci < kod> eksplisit: explicit

template<typename T>
void print(T value) {
  std::cout << "Value is: " << value << std::endl;
}

int main() {
  explicit template void print<int>(10); // 显式生成 print 模板的 int 实例化
  print<double>(3.14); // 默认实例化 print 模板以接受 double 类型
}
Salin selepas log masuk

实战案例

以下是一个使用函数模板的实战案例,它实现了比较不同类型对象的能力:

template<typename T>
bool compare(const T& lhs, const T& rhs) {
  return lhs < rhs;
}

int main() {
  int a = 3;
  int b = 5;
  std::cout << std::boolalpha << compare(a, b) << std::endl; // 比较两个 int 类型

  std::string s1 = "Hello";
  std::string s2 = "World";
  std::cout << std::boolalpha << compare(s1, s2) << std::endl; // 比较两个 std::string 类型
}
Salin selepas log masuk

在上面的例子中,comparerrreee

🎜Satu kes praktikal🎜🎜🎜Berikut ialah kes praktikal menggunakan templat fungsi, yang melaksanakan keupayaan untuk membandingkan objek dari jenis yang berbeza: 🎜rrreee🎜Dalam contoh di atas, bandingkan code> Templat fungsi direka bentuk untuk menerima jenis sewenang-wenangnya dan membandingkannya untuk menentukan nilai yang lebih kecil. Apabila fungsi ini dipanggil, pengkompil menjana instantiasi yang sesuai untuk jenis yang dibekalkan. 🎜

Atas ialah kandungan terperinci Instasiasi dan penjanaan 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!