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++ 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 类型 }
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 类型 }
实战案例
以下是一个使用函数模板的实战案例,它实现了比较不同类型对象的能力:
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 类型 }
在上面的例子中,compare
rrreee
Atas ialah kandungan terperinci Instasiasi dan penjanaan templat fungsi C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!