St.*_*rio 0 c++ one-definition-rule
根据c ++标准:
任何翻译单元都不得包含任何变量,函数,类类型,枚举类型或模板的多个定义.
//--translation_unit.cpp--//
int a;
void foo()
{
int a; //Second defention of a. ODR fails.
}
Run Code Online (Sandbox Code Playgroud)
你能解释一下ODR实际上是如何运作的吗?
Mik*_*our 13
这不会破坏规则,因为您定义了两个不同的变量.它们具有相同的名称,但在不同的范围内声明,因此是单独的实体.每个都有一个单一的定义.
函数范围中的声明被称为隐藏全局命名空间中的声明.在函数内,非限定名称 a引用局部变量,而限定名称 ::a引用全局.
| 归档时间: |
|
| 查看次数: |
740 次 |
| 最近记录: |