与LSGO一起学“第2章 做一个简短的C++程序(2.5 重名问题)”

来源:互联网 发布:淘宝怎么刷信誉和销量 编辑:程序博客网 时间:2024/06/10 01:29

2.5重名问题

上一节通过讲解iostream与iostream.h的区别引出了标准命名空间std,又从标准命名空间了解到所有的标准库函数都在标准命名空间std中定义,而C++之所以引入命名空间这个概念,是为了避免重名问题,比如说避免重复的函数名或者变量名所引起的冲突。

 

程序演示:

#include<iostream>

namespace a

{

   int b=5;

}

namespace c

{

   int b=8;

}

int main()

{

   using namespace a;

   using namespace c;

 

   int b=9;

        std::cout<<b<<std::endl;

      //std::cout<<b<<"  "<<a::b<<"  "<<c::b<<std::endl;

   return 0;

}

 

   using namespace a;

   using namespace c;

   int b=9;

这样我们就有了三个名字为b的变量名,但是它们的值都是不一样的。

假如我们不采用命名空间的话,显然我们是不能这么定义的:

int b = 5;

int b = 8;

int b = 9;

 

但是假如程序很大,而且不是一个人所写的时候,这样的情况会出现很多,C++的解决方法是采用命名空间,本节的程序采用了命名空间后,三个同名的变量b由于处于不同的命名空间中,因此它们不会产生冲突。

 

    //int b=9;

       std::cout<<b<<std::endl;

b这个符号引起了歧义。

编译器不知该输出哪个b。

因此终止编译并显示一条错误信息。

 

关于命名空间的具体作用在第二十二章“命名空间”将会有更详细的介绍,这里只需了解即可。


0 0
原创粉丝点击