为什么只能在头文件中实现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)实例化它们。如果这些模板类实现不在头文件中,则将无法访问它们,因此将无法编译它们。
热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短