c++显式实例化--函数模板--替换一个隐式实例化来学习它

标签 c++ instantiation

我正在阅读 c++ primer plus,但在理解隐式实例化的工作原理时遇到了一些问题。我还没有学过类,所以我只是在处理函数。我想我了解隐式实例化(函数模板)的基础知识,但我只是不了解显式实例化。我在下面有一个使用模板的函数,有人可以告诉我如果使用显式实例化这样的函数将如何编写。你可以改变它的工作方式,但要保持简单。我真的很感激。这将帮助我理解语法及其用法。

  2 #include <iostream>
  3 
  4 template <typename T>
  5 void show(T,T);
  6 
  7 
  8 int main()
  9 {
 10   int a = 10, b = 12;
 11   char c = 'x', d = 'y';
 12   
 13   show(a,b);
 14   show(c,d);
 15   
 16   return 0;
 17 } 
 18 
 19 template <typename T>
 20 void show(T a, T b )
 21 { 
 22   std::cout << "I used the int version " << a << " " << b << "\n";
 23 }

最佳答案

只需做一个 Show<int>(c, d)请注意,我已经明确实例化了 int版本,但通过了 char参数。那是(一个相当简单的)显式实例化,但您实际上可能指的是 explicit specialization .

关于c++显式实例化--函数模板--替换一个隐式实例化来学习它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7058323/

相关文章:

c++ - 无法打开输出文件 : permission denied

c++ - 如何在 Visual C++ 中使用 UTF8Encoding

java - 运行用户创建的 Java 类

java - 如何正确地为对象赋值,它们的赋值会引发异常

c++ - "No Matching Constructor"尝试实例化模板类的对象时出错

c++ - 使用 Visual Studio 将 HTML 浏览器嵌入到 native C++/Win32 项目中

c++ - 如何从Qt中的字符串中获取特定字段的值

c++ - 将程序一的输出作为程序二的输入传递

javascript - 正在加载 IE7 的 javascript.. 我的大 'Don' t' 是什么?

c++ - 我如何使用一个非常量值来实例化一个类的多个对象?