命名空间(和C语言中的结构体类似)
当一个程序中出现两个相同的变量时,比如下面的population和capital,这时候要用到population和capital时,计算机就不知道要用那个population、capital,就会出错,所以为了避免这样的错误,我们用命名空间来解决这样的麻烦,如下,相当于指明了population和capital,China::population中国的人口,Japa::population日本的人口,这样计算机就可以识别了。
#include <iostream>
#include <string> //string 变量字符串头文件
namespace China { //namespace 命名空间,China 命名空间名字;
float population=14.1;
std::string capital="北京";
//两个变量population和capital
}
namespace Japa {
float population=14.1;
std::string capital="北京";
}
int main {
std::cout <<"首都:" <<China::capital <<std::endl;
std::cout <<"人口" <<China::population <<std::endl;
std::cout <<"首都:" <<Japa::capital <<std::endl;
std::cout <<"人口" <<Japa::population <<std::endl;
system("pause");
return 0;
}
那么问题来了,当有多个相同的变量的时候,我们还是要用China::population、Japa::populatin这种方式来解决吗?有没有简便一点的方法呢?
当然这样解决肯定是没有问题的,只要代码敲的合适,但是这样写特别麻烦啊,比如要某公司开发一个大项目,一个大公司不可能只要一个程序员吧,所以每个人负责这个项目的一部分,这时候就难免出现很多的相同变量,那每个都要以China::population、Japa::populatin这种方式来解决就太麻烦了,而且对于每个程序员来说都很冤枉,在自己写的部分还要用这种方式,真的太麻烦了,所以就有了以下这种方式using namespace China;相当于提前声明了后面的population、capital,当后面有population、capital时,如果他的前面没有类似于Japa::capital、Japa::population 这样的声明,则直接默认为China::population、China::capital,这样就省去了每个变量前面都要加China的麻烦。看似是一个小改变,其实作用只要用了才知道。
#include <iostream>
#include <string> //string 变量字符串头文件
namespace China { //namespace 命名空间,China 命名空间名字;
float population=14.1;
std::string capital="北京";
//两个变量population和capital
}
namespace Japa {
float population=14.1;
std::string capital="北京";
}
using namespace China;
int main {
std::cout <<"首都:" <<capital <<std::endl;
std::cout <<"人口" <<population <<std::endl;
std::cout <<"首都:" <<Japa::capital <<std::endl;
std::cout <<"人口" <<Japa::population <<std::endl;
system("pause");
return 0;
}