首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么C++的<vector>模板类不违反一个定义规则?

为什么C++的<vector>模板类不违反一个定义规则?
EN

Stack Overflow用户
提问于 2015-12-31 23:23:41
回答 3查看 1.4K关注 0票数 11

也许这是个蹩脚的问题,但我不明白!如果我将<string><vector>包含在多个翻译单元(不同的.cpp)中,为什么它不破坏ODR?据我所知,每个.cpp都是不同的编译方式,因此向量的方法代码将分别为每个对象文件生成,对吗?所以链接者应该发现它并抱怨。即使不会(我怀疑这是模板的特例),当我将所有的代码链接在一起时,它会在每个单元中使用一个代码或不同的克隆代码集吗?

EN

Stack Overflow用户

发布于 2015-12-31 23:32:34

ODR没有声明一个结构只会在所有编译单元中被声明一次--它指出,如果您在多个编译单元中声明一个结构,那么它必须是同一个结构。如果您有两个名称相同但内容不同的vector类型,就违反了ODR。在这一点上,链接器会被混淆,而您会混淆代码和/或错误。

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34552380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档