【发布时间】:2014-09-02 08:09:27
【问题描述】:
假设我有:
template <typename T>
class A
{
//Do something with T
};
我知道编译器会为代码中定义的每个不同的T 生成一个class A<T>。
如果我有怎么办:
class B
{
template <typename T>
void f() { /* Do something with T */ }
};
class B 是否只有一个定义,但 f() 的多个重载对于每个不同的 T 被调用?
【问题讨论】:
-
是的。还能是什么?
-
Om 汇编级别没有类定义。每个类方法都被编译为带有隐藏“this”参数的全局函数。在每个编译单元中,模板化函数被编译为每个实例化类型的全局函数。
标签: c++ templates instantiation member-functions