为了防止在连接时出现多重定义,一般类型的定义不会放在头文件中,但模板的定义很特殊,由template<>处理的任何东西意味着编译器在当时不为它分配存储空间,它一直处于等待状态直到被一个模板实例告知,有一种机制能去掉模板的多重定义,为了使用方便,几乎总是在头文件中放置全部的模板声明和定义
#include <iostream>
#include <assert.h>
using namespace std;
template<typename T>
class array
{
enum{size = 100};
T A[size];
public:
T& operator[](int index);
};
template<typename T>
T& array<T>::operator [](int index)
{
assert(index >= 0 && index < size);
return A[index];
}
int main()
{
array<float> fa;
fa[0] = 1.414f;
cout << "fa[0]==" << fa[0] << endl;
return 1;
}
本文介绍模板类在头文件中的定义方式及其如何避免多重定义的问题。通过具体示例展示了模板类的声明与定义,并解释了编译器处理模板定义的机制。
1465

被折叠的 条评论
为什么被折叠?



