模板类的定义不是真正定义了一个类
只有实例化的时候,才根据类型定义了一个类
实例化的时候,要求能“看”到模板的定义
模版本身并不是个定义,当实体化的时候才完成了定义,然后拿这个定义才能去建立对象,
所以放的一起
引用C++深层探索一段话:
函数模板并不是真正的函数,只是c++编译器生成具体函数的一个“棋子”,所以,
找们不能把函数馍板的声明和定义分开放在不同的文件里;譬如,我们在一个头文件声
明函数模板,而在另一个c++文件中写出函数模板的定义,然后在臼己的源代码文件中
包含头文件:
这样做可以吗?
不行。它里面只是一个函数模板,于编译诺没有看到任何调用函数的晤句,所以并不会生成具体的.真正的函数致最后链接程序因为找不到代表具体函数的符号而链楼失败-
目前主流编译器不支持分离编译,即模板声明写到h文件中,实现写到cpp文件中。
C++标准倒是规定有分离编译,不过对于编译器来说实现比较困难所以大多数编译器不支持(包括vc全系列)
只有实例化的时候,才根据类型定义了一个类
实例化的时候,要求能“看”到模板的定义
模版本身并不是个定义,当实体化的时候才完成了定义,然后拿这个定义才能去建立对象,
所以放的一起
引用C++深层探索一段话:
函数模板并不是真正的函数,只是c++编译器生成具体函数的一个“棋子”,所以,
找们不能把函数馍板的声明和定义分开放在不同的文件里;譬如,我们在一个头文件声
明函数模板,而在另一个c++文件中写出函数模板的定义,然后在臼己的源代码文件中
包含头文件:
这样做可以吗?
不行。它里面只是一个函数模板,于编译诺没有看到任何调用函数的晤句,所以并不会生成具体的.真正的函数致最后链接程序因为找不到代表具体函数的符号而链楼失败-
目前主流编译器不支持分离编译,即模板声明写到h文件中,实现写到cpp文件中。
C++标准倒是规定有分离编译,不过对于编译器来说实现比较困难所以大多数编译器不支持(包括vc全系列)