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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MySQL 外连接、内连接与⾃连接的区别
内连接  连接的数据表相对应的匹配字段完全相等的连接。连接关键字是 inner join 外连接 分为左外连接与右外连接、全连接。 左连接的结果集包括指定的左表全部数据与匹配的右表数据,右表中没匹配的全为空值.关键字 left join 右连接的结果集包含指定的右表全部数据与匹配的左边数据,左边中没匹配的全为空值.关键字 right join 全连接返回左右数据表的所有行.关键字 fu
sql中内连接与外连接的区别
你是要弄清楚区别在什么地方还是单纯想要文字说明 文字说明的楼上说了一大堆了,不说了。 弄个例题,直观一点。两个表: --表stu id name 1, Jack 2, Tom 3, Kity 4, nono --表exam id grade 1, 56 2, 76 11, 89 内连接 (显示两表id匹配的) select stu.id,exam.id,stu.
数据库的内连接和外连接的区别
内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。全外连接:左外连接 union 右外连接。示例:数据库版本:Oracle表TESTA,TESTB,...
外连接与内连接有什么区别?
(一)内连接   内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的 列值。内连接分三种:   1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结 果中列出被连接表中的所有列,包括其中的重复列。   2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的 列的列值。这些运算符包括>、>=、、!。   3、自然连接:在连接条件中使用
Oracle (内连接)与(外连接)区别
表stu id name 1, Jack 2, Tom 3, Kity 4, nono 表exam id grade 1, 56 2, 76 11, 89 内连接(显示两表匹配的id) select stu.id, exam.id, stu.name, exam.grade from stu inner join exam on stu.id = exam.id 1 1
表的内连接、外连接(左连接与右连接)
听同学说有校招笔试考到这个概念,一般没有专门学习数据库的话对这个都不是很了解,但是其实很简单,看到一篇博客对这个概念解释的很清楚,故而转载。  有两个表A和表B。   表A结构如下:   Aid:int;标识种子,主键,自增ID   Aname:varchar   数据情况,即用select * from A出来的记录情况如下图1所示:
内连接和外连接区别
在之前,我对MSSQL中的内连接和外连接所得出的数据集不是很清楚。这几天重新温习了一下SQL的书本,现在的思路应该是很清楚了,现在把自己的理解发出来给大家温习下。希望和我一样对SQL的连接语句不太理解的朋友能够有所帮助。(发这么菜的教程,各位大大们别笑话偶了,呵:D )有两个表A和表B。表A结构
数据库-内连接与外连接的区别(举例说明)
内连接,也被称为自然连接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了两个表中所有相匹配的数据,舍弃了不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配的所有行,所以内连接可能会造成信息的丢失。内连接语法如下: select fieldlist from table1 [inner] join table2 on table1.column = table2.colum
MySQL连接查询 内连接和外连接的区别
MySQL 连接查询 1.使用连接查询的场景 将多张表进行记录的连接查询(按照某个字段指定的条件进行数据的拼接); 进行数据的拼接(两张表的内容显示在一个结果表中 使用连接查询) 最终的结果是:记录数有可能变化,字段数一定会增加(至少两张表的合并) 意义:在用户查看数据的时候,显示的数据来自于多张表 连接查询的分类 4类 内连接 inner join内连接 【掌握】
内连接、左外连接、右外连接、交叉连接及其区别
首先建立两张表A、B。 表A: Aid:int类型,无符号递增,主键 name:varchar类型 表B: Bid:int类型,无符号递增,主键 name:varchar类型 age:int类型 下图说明了两个表之间的关系:   内连接(INNER JOIN) 利用内连接可获取两表的公共部分的记录。 select * from A JOIN B ON