为什么只能在头文件中实现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 玫瑰礼盒祝福语大全简短
14 家庭英语祝福语短句简短
15 参加儿子大学祝福语简短
16 新年酒席开席祝福语简短
17 新春进门祝福语大全简短
18 公司开年仪式祝福语简短