程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++庫研究筆記——命名空間namespace 嵌套後的作用域問題

C++庫研究筆記——命名空間namespace 嵌套後的作用域問題

編輯:C++入門知識

總結:

1.::ant 表根命名空間,或匿名空間

2.同時存在 ::ant::i 和::ant::blas::i,  ant::detail::i時,在::ant::detail中使用i時,默認調用ant::detail::i

3.平級namespace 調用用,要加相應的命名空間

4.域內命名空間可省

5.即使存在多個相同名字的命名空間,不會報錯,按最局部分調用原則調用,如同全局變量與局部變量名字一樣時,優先調用局部變量

 


代碼:

 

<SPAN style="FONT-SIZE: 14px">#include <stdlib.h>

#include <iostream>

namespace detail
{
const int i=99;
}

namespace ant
{
namespace blas
{
const int i=0;
}//end blas

const int i=3;

namespace detail
{
const int i=33;
void test()
{
    std::cout<<"i:"<<i<<std::endl;  // 33
    std::cout<<"::detail::i"<<::detail::i<<std::endl; // 99
    std::cout<<"detail::i"<<detail::i<<std::endl; // 33
    std::cout<<"::ant::blas::i:"<<::ant::blas::i<<std::endl;// 0
    std::cout<<"ant::blas::i"<<::ant::blas::i<<std::endl;   // 0
    std::cout<<"blas::i"<<blas::i<<std::endl;   // 0 平級
    //std::cout<<"::blas::i"<<::blas::i<<std::endl;   // error
    std::cout<<"ant::i"<<ant::i<<std::endl;// 3
}
}// end detail

}//end namespace ant

using namespace std;
int main()
{
    ant::detail::test();
    return 0;
}</SPAN>

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved