class C {
using namespace std; // error
};
namespace N {
using namespace std; // ok
}
int main () {
using namespace std; // ok
}
我想知道它背后的动机。
原文由 iammilind 发布,翻译遵循 CC BY-SA 4.0 许可协议
class C {
using namespace std; // error
};
namespace N {
using namespace std; // ok
}
int main () {
using namespace std; // ok
}
我想知道它背后的动机。
原文由 iammilind 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于 开放性 与 封闭性,这可能是不允许的。
将命名空间导入类会导致类似这样的有趣案例:
namespace Foo {}
struct Bar { using namespace Foo; };
namespace Foo {
using Baz = int; // I've just extended `Bar` with a type alias!
void baz(); // I've just extended `Bar` with what looks like a static function!
// etc.
}
原文由 Daniel Steck 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
我不确切知道,但我的猜测是在类范围内允许这样做可能会导致混淆:
由于没有明显的方法可以做到这一点,标准只是说你不能。
现在,当我们谈论命名空间范围时,这不那么令人困惑的原因: