为什么模板函数的声明和实现都放在.h文件中
当你不使用这个模板函数或模板类,编译器并不实例化它,当你使用时,编译器需要实例化它,因为编译器是一次只能处理一个编译单元,也就是一次处理一个cpp文件,所以实例化时需要看到该模板的完整定义。所以都放在头文件中。
这不同于普通的函数,在使用普通函数时,编译时只需看到该函数的声明即可编译,而在链接时由链接器来确定该函数的。
其实模板实现不能放在cpp文件中,主要是cpp在c++编译期间不能决定模板参数的类型,所以不能生成模板函数的实例,所以它会把模板类型带到链接期间,如果这个期间有函数调用了该实例,这个时候由于没有把模板实例到特定类型,就会导致编译错误。但是如果不调用该模板函数,那么是不会出现错误的。
转载于:https://www.cnblogs.com/QoQian/p/5054386.html
为什么模板函数的声明和实现都放在.h文件中相关推荐
- 为什么C++模板函数的声明与实现都放在.h文件中
引用C++primer的话:C++支持两种模板编译模式包含模式(Inclusion Model )和分离模式(Separation Model) 1. 包含编译模式 在包含编译模式下,在每个模板被 ...
- 【C++】模板函数的声明和定义必须在同一个文件中
1.问题描述 习惯性的将函数的定义和实现,分别写在头文件和源文件(.cpp)中.今天也按照这个习惯实现了一个模板函数.然后编译时报错 ... error: undefined reference to ...
- c++模板函数的声明和定义该在什么文件里?
最近在写模板函数的时候,发现了一个问题. 按照江湖规矩我们的声明一般放在.h文件,定义放在.cpp文件. 而在写模板函数的时候,套用江湖规矩会出错. 解决方法:将模板函数的声明和定义都放在.h文件中. ...
- 为什么C++模板声明与定义要放在同一文件中?
写了3年多C++程序,很少用到模板,我靠,今天想试一下,照着别人的例子写,什么鬼,怎么都运行不过,仔细比对代码才发现,C++模板的声明与定义必须放到一个文件,.h或者.hpp, 真是颠覆我对C++编程 ...
- C++模板函数的声明和定义是否可以分开?
如果按照普通函数一样,将模板函数的声明与定义的分开,声明放在头文件,定义放在cpp文件实现,你会发现,编译没问题,但是在链接阶段会报"undefined references". ...
- error LNK2005 --类的声明和定义放在一个文件中
刷C++primer的时候,将类的声明和定义均放在头文件中,报错error LNK2005 1> Sales_data.h 1>Sales_data.obj : error LNK2005 ...
- 将函数实现放在头文件中
研究一个开源算法库,采用C++模板编程,所有函数实现都放在了头文件中,现在把模板去掉,链接时发生冲突,具体原因如下: 因为多个源文件包含了含有函数定义的头文件,在编译的时候,每个源文件都会包含一份函数 ...
- 将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中
将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中 写这种.h和.cpp文件分开的大程序,虽然对很多人来说很简单,对自己来说算是第一次吧,好好学C++,加油~ 题目:定义Point类,由 ...
- 利用fputc函数写一个putw(w,fp)函数,将整数w写入fp所指文件中; 利用fgetc函数写一函数getw(fp)从所指文件读出一整数
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 5.利用fputc函数写一个putw(w,fp)函数,将整数w写入fp所指文件中: 利 ...
最新文章
- CCF NOI1134 奶牛晒衣服
- (调用系统电话薄)运行时权限的基本使用
- 数据中心分布情况和业务占比分析
- RNN-LSTM循环神经网络-03Tensorflow进阶实现
- HTML+CSS+JavaScript复习笔记持更(九)——CSS3常用属性之盒模型
- 艾瑞发布2018视频云行业报告,网易云信领跑第一阵营
- 学 Python找不到练手项目?试试这些!
- 一拍即合、一见钟情之后,智慧城市的“福利”来啦……
- mapinfo图层导入奥维_(通信技能分享)怎样把谷歌地球上画的路线图导入到测试软件中!...
- MySQL在Docker环境下运行基础
- 更新了android sdk出现aapt问题以及模拟器启动错误
- cron和crontab_Linux crontab命令创建和管理Cron作业
- 奇怪的比赛|2012年蓝桥杯B组题解析第四题-fishers
- 进行单元测试时一直报这个错,原因是缺少aspectjweaver包
- 【算法学习笔记】18:树与图的DFS与BFS
- 网络编程笔记之TCP例子(帅帅老师讲堂)
- 影单:分享一下最近在看的一些电影
- 【SeedLab】Packet Sniffing and Spoofing Lab
- 得到本机所有 IP 地址
- NSFC 申请不中的反思 (内部讨论)
热门文章
- Qt 多界面来回切换的问题以及Qt界面关闭与销毁
- 牛客国庆集训派对Day3: G. Stones(博弈+SG)
- bzoj 3632: 外太空旅行(随机)
- 贪心算法 (Greedy Algorithm)
- [PyTorch] PyTorch版本不兼容问题+更新日志链接
- k3s 部署, 使用注意事项
- uuid和python中的uuid.py的使用教程
- Android开发:getSupportFragmentManager()不可用
- JavaSE学习笔记(七)—— 继承final关键字
- centos7 卸载 jdk