示例:
template<typename T>
class A {
void f() { std::cout << "f";}
};
...
A<int> a;
A<double> a;
编译和链接后,
f
在最终二进制文件中生成一次还是多次(每个模板实例化一次)?我似乎在标准中找不到这条规则。 AI说它只生成一次,但我对它不够信任。
f是生成一次还是多次
成员函数的 声明 使用
A<int>
和 A<double>
的隐式实例化进行实例化。但定义仅在实际使用成员函数时实例化。
这意味着由于
A<int>
和 A<double>
是不同的类类型,因此将实例化两个不同的成员函数声明。您的程序中不会实例化任何定义,因为您实际上并未使用成员函数。