c++ namespace 实验

来源:互联网 发布:cdp 知乎 编辑:程序博客网 时间:2024/06/14 17:11
// test_namespace.cpp : Defines the entry point for the console application.//#include <iostream>#include <windows.h>using namespace  std;namespace B{struct test_struct{   int x;};}namespace C{struct test_struct{   int x;    int  y;};}using B::test_struct;  // 即使这里说要使用B namespace, 但是对被namespace C 包围的code 不受影响namespace C{void show_c_x(){test_struct test;   // 此处的test_struct 用的是C namespace 的, 不是B 的。test.x = 3;test.y = 5;std::cout <<"show_c_x:" <<test.x << ":"<< test.y<<"\n";}}using B::test_struct;  // 此处申明使用B 的namespace, 因为namespace D 中没有声明test_struct, 因此D namespace里的test_struct 会用的是B namespace 里的test_structnamespace D{void show_d_x(){test_struct test;test.x = 3;test.y = 5;   // 此时build failstd::cout <<"show_d_x:" <<test.x << ":"<< test.y<<"\n";    }}using B::test_struct;  // 即使这里说要使用B namespace, 但是对被namespace C 包围的code 不受影响,                                    // 但是如果再namespace C 里显示使用B:: 作用域,那么嗨是会应用到B::test_structnamespace C{void show_c_x(){B::test_struct test;   // 此处的test_struct 是B::的。test.x = 3;test.y = 5; // build failstd::cout <<"show_c_x:" <<test.x << ":"<< test.y<<"\n";}}int main(int argc, char * argv[]){cout << "hello world\n";C::show_c_x();D::show_d_x();Sleep(10000);return 0;}