|
|
1
2
作为 wikipedia page 注意,ODR有两个相关但不同的部分——一个应用于编译单元内的模板、类型、函数和对象,另一个应用于跨编译单元的对象和非内联函数。 |
|
|
2
1
ODR允许一个类的多个定义以及内联函数的定义,只要所有定义都相同,并且每个定义都在一个单独的转换单元中。后一个要求是由头部防护装置满足的(或者如果没有输入错误的话)。 类定义仅声明数据成员。这些不是变量定义。ODR允许无限声明。 在构造类的实例之前,不存在成员变量的实例,并且类的每个实例都包含一个单独的变量实例。 如果此标头包含在多个翻译单元中,则不会违反ODR。 |
|
|
ravi chandra · 为什么这不违反一条定义规则? 8 年前 |
|
|
daya · 无法理解全局变量和具有外部存储类的变量之间的区别? 9 年前 |
|
|
mahdiolfat · 为什么“函数的隐式声明”只是一个警告? 10 年前 |
|
|
Benoît Dubreuil · gtest和MinGW链接 10 年前 |
|
|
user5117637 · C++如何区分调用全局变量和声明全局变量? 11 年前 |