meetings
2015-09-01 03:00
采纳率: 30%
浏览 6.2k

为什么模板类的声明和实现必须定义在一个.h文件中?

”模板类的实现,脱离具体的使用,是无法单独的编译的;把声明和实现分开的做法也是不可取的,必须把实现全部写在头文件里面。“这个的原理是啥啊,越详细越好。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • meetings 2015-09-01 07:23
    已采纳
    打赏 评论
  • meetings 2015-09-01 03:07

    1.链接的时候,需要实例化模板,这时候就需要找模板的具体实现了。假设在main函数中调用了一个模板函数,这时候就需要去实例化该类型的模板。注意main函数里面只包含了.h文件,也就是只有模板的声明,没有具体实现。就会报错。
    2.而模板的实现.cpp里面,虽然有模板的具体实现,但是没有谁在该.cpp里面使用一个模板函数,就不会生成一个具体化的实例。

    我搞懂了

    打赏 评论
  • oyljerry 2015-09-01 03:10

    这个是编译器实现的限制,理论上也是可以做到模板分离的

    打赏 评论
  • meetings 2015-09-01 03:18

    “而模板的实现.cpp里面,虽然有模板的具体实现,但是没有谁在该.cpp里面使用一个模板函数,就不会生成一个具体化的实例”,这句话还是不太理解,我觉得main函数应该显示指定了类型,然后去调具体的函数。

    打赏 评论

相关推荐 更多相似问题