非内联函数定义模

2019-04-13 17:01发布

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