c++ 命名空间,using namespace std详解

命名空间

首先举个例子:当一个年级有两名都叫代丘的同学时,为了区分他们,我们在使用名字前不得不使用一些其他的信息,比如班级,家庭住址等。

一个程序需要引入两个库文件,但这两个库文件可能有一个同名的函数 fun() ,为了能够区分,我们引入了 命名空间 的概念,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。本质上,命名空间就是定义了一个范围。

定义命名空间
namespace namespace_name{
	//代码申明
}

使用关键字 namespace ,后接空间名称。

使用命名空间中的数据,需要用到 作用域解析运算符 :: 这里不做详细解释

//命名空间
#include
using namespace std;

namespace first_space {
	void fun(){
		cout<<"first_space"<<endl;
	}
} 
namespace second_space {
	void fun(){
		cout<<"second_space"<<endl;
	}
}

int main()
{
	first_space::fun();			//调用第一个命名空间中的函数
	second_space::fun();		//调用第二个命名空间中的函数
	
	return 0;
}
//first_space
//second_space

using指令

可以使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。

例如

using namespace std;

std是一个命名空间,C++标准函数或者对象都是在std中定义的,例如cin和cout,当我们要使用标准库的函数或对象时都需要用std来限定。

这也就可以解释当使用 cin 和 cout 时,为什么不是 std::cin 和 std::cout 。

#include

int main()
{
	std::cout<<"cout"<< std::endl;
}

嵌套命名空间

简单解释,在一个命名空间中在定义一个命名空间

#include
using namespace std;

namespace first_namespace{
	void fun1(){
		cout<<"fun1"<<endl;
	}
	namespace second_namespace{
		void fun2(){
			cout<<"fun2"<<endl;
		}
	}
}
int main()
{
	//调用内部命名空间的函数
	first_namespace::second_namespace::fun2();
	
	//using namespace second_namespace;		//错误
	using namespace first_namespace::second_namespace;	//正确		

	fun1();
	
	return 0;
}

你可能感兴趣的:(1024程序员节,c++,编程语言)