【发布时间】:2020-06-20 15:59:29
【问题描述】:
** 为什么代码的输出是
x = 1 count = 0
x = 1 count = 1
x = 1.1 count = 0
**
//code for template
#include <iostream>
using namespace std;
template <typename T>
void fun(const T&x)
{
static int count = 0;
cout << "x = " << x << " count = " << count << endl;
++count;
return;
}
int main()
{
fun<int> (1);//for int
cout << endl;
fun<int>(1);//for int
cout << endl;
fun<double>(1.1);//for int
cout << endl;
return 0;
}
Compiler 是否在上述代码中为 c++ 中的每种数据类型创建一个模板函数的新实例,以及我们如何在调用函数 fun() 时将右值分配给引用变量?
【问题讨论】:
-
恕我直言,理解模板的最简单方法是将它们视为模板,就像艺术家模板一样。在评估之前替换数据类型。模板没有“背景”。将它们视为模板可以解释为什么模板不能在 cpp 文件中。