与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。
因此终止编译并显示一条错误信息。
关于命名空间的具体作用在第二十二章“命名空间”将会有更详细的介绍,这里只需了解即可。
- 与LSGO一起学“第2章 做一个简短的C++程序(2.5 重名问题)”
- 与LSGO一起学“第2章 做一个简短的C++程序(2.6 注释)”
- 与LSGO一起学“第2章 做一个简短的C++程序(2.2 输出语句的使用)”
- 与LSGO一起学“第2章 做一个简短的C++程序(2.3 std::介绍)”
- 与LSGO一起学“第2章 做一个简短的C++程序(2.1简单的屏幕输出小程序)”
- 与LSGO一起学“第2章 做一个简短的C++程序(2.4 iostream与iostream.h的区别)”
- 与LSGO一起学“第1章 初识C++(1.2 C++的发展过程)”
- 与LSGO一起学“第1章 初识C++(1.1 C++简介)”
- 与LSGO一起学“第1章 初识C++(1.6Visual Studio 2010编译器)”
- 与LSGO一起学“第1章 初识C++(1.5 C++与其他语言的区别)”
- 与LSGO一起学“第1章 初识C++(1.4学习C++之前需要先学C吗?)”
- 与LSGO一起学“第1章 初识C++(1.3 C++与C有什么不同)”
- 背包问题--动态规划 -- 写一个简短的程序(php)
- 第二章 从一个最简短的C++程序讲起
- 【跟我一起学Unity3D】做一个2D的90坦克大战之地图编辑器
- 【跟我一起学Unity3D】做一个2D的90坦克大战之AI系统
- 《父与子的编程之旅-与小卡特一起学python》第18章
- 跟我一起学C语言(第五天)
- Lua_第19章 String 库(下)
- 新东西015--AS下gradle参数解析
- Android面试题集锦二
- 与LSGO一起学“第2章 做一个简短的C++程序(2.4 iostream与iostream.h的区别)”
- PAT (Advanced Level) Practise 1093 Count PAT's (25)
- 与LSGO一起学“第2章 做一个简短的C++程序(2.5 重名问题)”
- 数据挖掘算法-Logistic回归
- [leetcode]Single Number II
- 关于QT的几个记录
- 与LSGO一起学“第2章 做一个简短的C++程序(2.6 注释)”
- solr入门之字符串生成唯一标识--MD5加密
- Java虚拟机学习之对象实例化分析
- C++中inline函数
- 阻塞与非阻塞文件读取