C++ 速查手冊 V1.00 - 單元 11.1 - 巢狀命名空間




命名空間可以是巢狀的,也就是命名空間裡可以定義其他的命名空間。


舉例如下


001 #include <iostream>
002
003 namespace demo {
004    namespace demo2 {
005       class Demo {
006       public:
007          int a;
008          int b;
009
010          int do_something() {
011             return a + b;
012          }
013       };
014    }
015 }
016
017 int main() {
018    demo::demo2::Demo d;
019    d.a = 33;
020    d.b = 44;
021    std::cout << d.do_something()
022              << std::endl;
023
024    return 0;
025 }
026  
027 /* Kaiching Chang 
028    u1101.cpp
029    2014-02 */

命名空間 demo2 定義在 demo


003 namespace demo {
004    namespace demo2 {
005       class Demo {
006       public:
007          int a;
008          int b;
009
010          int do_something() {
011             return a + b;
012          }
013       };
014    }
015 }

因此使用 demo2 中定義的識別字 (identifier) ,需要標明命名空間的次序


018 demo::demo2::Demo d;

編譯執行,結果如下


$ g++ u1101.cpp
$ ./a.out
77
$

continue ...

沒有留言: