2 mcfer mcfer 于 2016.03.03 19:07 提问

请问c++中的模板函数是内连接还是外连接?

我们知道c++的类是内连接,其中的模板类也是内连接,一个包含模板类的头文件可以被多个cpp包含,并不影响链接的过程。
但是函数默认的是外连接,对于模板函数而言,是这样的吗?如果模板函数是外连接的话,那么在多个cpp中调用同一个模板函数,为什么链接不报错呢?
所以我认为c++的模板函数和普通函数不一样,是内连接。我的想法正确吗?

2个回答

oyljerry
oyljerry   Ds   Rxr 2016.03.03 19:25

模板是直接展开,编译的时候,会实例化化到你的cpp实现中去

John_ToStr
John_ToStr   Rxr 2016.03.04 09:38

模板函数没有内外链接这一说法。他是运行时推导,所以模板函数应该写在cpp文件里面。

John_ToStr
John_ToStr 回复mcfer: 怎么可能,把你代码粘上来,我不信。。。除非类不是你写的,你也不知道他的成员变量,
接近 2 年之前 回复
mcfer
mcfer 回复John_ToDebug: 哦哦 我大概懂了点,那为什么在c++中class的静态变量不能直接初始化呢?
接近 2 年之前 回复
John_ToStr
John_ToStr 回复mcfer: 内链接还是外连接指针对于全局对象和全局函数来说的,类已经是局部作用域了。
接近 2 年之前 回复
John_ToStr
John_ToStr 回复mcfer: 模板是编译时的东西,跟链接这一步还扯不上关系, 运行时推导出来相应的对象因为属于这个类,所以它不具有全局作用域,而局部变量不会有链接属性的。
接近 2 年之前 回复
mcfer
mcfer 谢谢你的回答。还是不太懂呢,对于模板类而言呢,模板类可不可以理解为内链接呢?
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!