为什么 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)对其进行实例化。如果这些模板类实现不在头文件中,它们将不可访问,因此不会编译。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP