C++ ODR

来源:互联网 发布:淘宝网店怎样推广 编辑:程序博客网 时间:2024/05/21 12:08

单定义规则(ODR,One Definition Rule):C++ 标准规定每个程序应该只包含那个程序中用到的每个非内联函数或对象的一个定义,但是在同一个程序中,一个类、枚举类型、具有内部链接的内联函数和和一个模板可能有不止一个定义,因此只要保证每个定义至出现在一个独立的翻译单元(TU)即可。简言之:同一翻译单元不能出现多个相同的定义(不能出现重复定义、歧义。)。

定义的同等性:在不同的翻译单元中,当且仅当两个定义中每个符号形式都相同,而是这些符号在两个翻译单元具有相同的含义时,这两个定义才完全相同。