C++中模板分离问题
在一本C++模板书中看到,如果在a.h文件里定义了一个类,实现类中的函数最好也写在a.h里,因为如果写在另一个文件里会让编译器找不到特定的函数声明。
但我将其中的函数定义在a.cpp里,照样可以运行, 是gcc的优化吗?
一起很纠结,如果像书上的那种写好几个文件还特化的方法太麻烦了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
模板分离只是一个传说
假如是函数,h中只写声明, 但是假如是模板,那么必须把所有实现写在h中,否则编译器无法在编译时根据模板完成函数或者类的构建。因为编译总是以cpp文件为单位的。
回复 3# benbrick
但是在g++里将实现写到相应有cpp里可以正常使用,这是怎么回事?
以前的编译器不支持这种模板分离编译
不可能!贴代码出来
嗯嗯嗯嗯嗯嗯嗯呃...
回复 6# changsha
matrix.h
复制代码matrix.cpp
复制代码
你只是定义了模板类但是从来没有实例化,当然没有问题
回复 9# changsha
这样用也没有问题
复制代码