您的位置:首页 > 编程语言 > C语言/C++

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

2016-03-25 19:17 302 查看
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。

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

关于命名空间的具体作用在第二十二章“命名空间”将会有更详细的介绍,这里只需了解即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: