关于类模板中类定义不能分离成.cpp和.h文件的原因

模板类的定义不是真正定义了一个类

只有实例化的时候,才根据类型定义了一个类

实例化的时候,要求能“看”到模板的定义   

模版本身并不是个定义,当实体化的时候才完成了定义,然后拿这个定义才能去建立对象,
所以放的一起  

引用C++深层探索一段话:

函数模板并不是真正的函数,只是c++编译器生成具体函数的一个“棋子”,所以,
找们不能把函数馍板的声明和定义分开放在不同的文件里;譬如,我们在一个头文件声
明函数模板,而在另一个c++文件中写出函数模板的定义,然后在臼己的源代码文件中
包含头文件:
这样做可以吗?
不行。它里面只是一个函数模板,于编译诺没有看到任何调用函数的晤句,所以并不会生成具体的.真正的函数致最后链接程序因为找不到代表具体函数的符号而链楼失败-



目前主流编译器不支持分离编译,即模板声明写到h文件中,实现写到cpp文件中。
C++标准倒是规定有分离编译,不过对于编译器来说实现比较困难所以大多数编译器不支持(包括vc全系列)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值