// 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;
}
c++ namespace 实验
最新推荐文章于 2021-04-13 16:51:20 发布