C++的命名空间的使用

C++命名空间的定义

         namespace name {  …  }

C++命名空间的使用

         使用整个命名空间:using namespace name;

        使用命名空间中的变量:using name::variable;

        使用默认命名空间中的变量:::variable

        默认情况下可以直接使用默 认命名空间中的所有标识符

注意:

      在C++中的命名空间的使用是有两种机制:using声明和using编译指令

using声明: using name::variable

using编译指令:using namespace name

注意这两种机制的区别:using声明是直接声明使用name空间中的变量,而using编译可以使用整个name命名空间中的所有

使用了using声明,其实就相当于直接就使用该变量的内存,可以直接使用该变量,如:

#include "iostream"
using namespace std;

namespace  namespaceA
{
	int a = 10;
}

void main()
{
    using namespaceA::a;
    cout<< a <<endl;
    system('pause');

}

using编译指令:可以直接使用这个命名空间中的所有

#include "iostream"
using namespace std;

namespace  namespaceA
{
	int a = 10;
}

void main()
{
    using namespace namespaceA;
    cout<< a <<endl;
    system('pause');

}

但是需要注意:如果同时使用using两个命名空间,但是两个命名空间中存在的同一名称的变量,需要加上命名空间符号,否则会有冲突,如:

namespace  namespaceA
{
	int a = 10;
}

namespace  namespaceB
{
	int a = 20;
	namespace namespaceC
	{
		struct Teacher
		{
			char name[32];
			int age ;
		};
	}
}

//4 使用命名空间
//
void main()
{
	using namespace namespaceA;
	using namespace namespaceB;
	cout<<namespaceA::a<<endl;  //因为namespaceA和namespaceB两个命名空间中都存在变量a,因此
                      //直接写a是会出编译错误的,需要加上命名空间前缀
	cout<<namespaceB::a<<endl;

	//显示的, 写全
	{
		//namespaceB::namespaceC::Teacher t1;
		//t1.age = 33;
	}
	

	

	using namespaceB::namespaceC::Teacher  ;
	Teacher t2;
	t2.age = 36;


	system("pause");
}

猜你喜欢

转载自blog.csdn.net/u013196348/article/details/82860406