c – 在另一个命名空间中是否使用等同于别名的命名空间?

前端之家收集整理的这篇文章主要介绍了c – 在另一个命名空间中是否使用等同于别名的命名空间?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑以下两个语句:
  1. namespace foo = bar;
@H_404_4@和

  1. namespace foo {
  2. using namespace bar;
  3. }
@H_404_4@这两个陈述是否相当,还是有一些我不知道的细微差别?

@H_404_4@(请注意,这不是编码风格的问题 – 我只是对C解析感兴趣).

解决方法

  1. namespace foo=bar;
@H_404_4@这不影响任何名称查找规则.唯一的影响是让’foo’别名为’bar’.例如:

  1. namespace bar
  2. {
  3. void b();
  4. }
  5.  
  6. void f () {
  7. bar::b (); // Call 'b' in bar
  8. foo::b (); // 'foo' is an alias to 'bar' so calls same function
  9. }
@H_404_4@以下更改查找规则

  1. namespace NS
  2. {
  3. namespace bar
  4. {
  5. }
  6.  
  7. namespace foo {
  8. using namespace bar;
  9.  
  10. void f () {
  11. ++i;
  12. }
  13. }
  14. }
@H_404_4@当’i’进行查找时,首先搜索’foo’,然后再搜索’NS’,然后’bar’.

猜你在找的C&C++相关文章