在 [namespace.udecl]/10 中有以下示例:
namespace A {
int i;
}
namespace A1 {
using A::i;
using A::i; // OK: double declaration
}
void f() {
using A::i;
using A::i; // error: double declaration
}
该片段在 clang 中编译。
第一个是命名空间内的声明,并且使用 #include 可能会频繁发生多个 using 语句。第二个是在函数的定义中,除非你犯了错误,否则你永远不会这样做。例如,您也不能两次定义相同的符号,但可以声明多次。
using 语句不仅仅是一个声明。它更强大一些,因为它将函数从一个名称空间导入到另一个名称空间。例如,它可以将受保护的基类成员函数拉入派生类,使其成为公共的。这几乎是一个链接定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)