为什么只能在头文件中实现C ++模板?
在C++中实例化模板时,编译器会创建一个新类。此类将您放置模板参数的所有位置替换为使用时传递给它的实际参数。对于例如-
template<typename T> class MyClass {
T foo;
T myMethod(T arg1, T arg2) {
//Impl-
}
};在您程序的某处使用此类,
MyClass<int> x;
编译器会在为您传递的每个类型参数遇到新类时创建一个新类。例如,如果您创建了3个具有不同模板参数的对象,则将获得3个类,它们等效于-
class MyClassInt {
int foo;
int myMethod(int arg1, int arg2) {
//Impl-
}
};为此,编译器需要在遇到此类语句之前有权访问类和方法的实现,以使用模板参数(在本例中为int)实例化它们。如果这些模板类实现不在头文件中,则将无法访问它们,因此将无法编译它们。
热门推荐
6 保研的祝福语简短
10 年轻20岁祝福语简短
11 朋友结婚祝福语信息简短
12 女孩婚礼贺卡祝福语简短
13 30段点歌简短祝福语
14 虎年春节祝福语图文简短
15 写给后妈祝福语大全简短
16 简短回复生日祝福语
17 校长送毕业祝福语简短
18 毕业立体贺卡祝福语简短