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

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。

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

 

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少年编程小助手_Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值