您的位置:首页 > 编程语言 > C语言/C++

c++ namespace 实验

2017-05-19 17:57 120 查看
// 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_struct
namespace D{

void show_d_x(){
test_struct test;
test.x = 3;
test.y = 5;   // 此时build fail
std::cout <<"show_d_x:" <<test.x << ":"<< test.y<<"\n";

}

}

using B::test_struct;  // 即使这里说要使用B namespace, 但是对被namespace C 包围的code 不受影响,
// 但是如果再namespace C 里显示使用B:: 作用域,那么嗨是会应用到B::test_struct
namespace C{
void show_c_x(){
B::test_struct test;   // 此处的test_struct 是B::的。
test.x = 3;
test.y = 5; // build fail
std::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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: