c++入门-- using namespace std (命名空间)到底是什么意思?

#include<iostream>
using namespace std;
int main()
{
    cout<<"Hello Word";
}

综述:相信以上代码是大多数人第一次接触c++的敲门砖,不难发现第一句代码是包含了一个头文件,它似乎与输入输出流有关,这与c语言还有些相似,但是第二句却让人有些摸不着头脑。别急,在以下的篇幅中,我将尽可能详细地描述清楚,欢迎不足之处补充说明。

1.为什么引入命名空间

先让我们假设这样的一个场景,同一个公司的小王和小明在一起编写了同一个项目后,两人都编写了add函数,那假设现在在项目中要调用add函数,那我们该怎么知道调用的是谁的add函数呢(假设add参数与操作不相同)?以下是编程时遇到和全局作用域当中变量冲突的情况
#include <stdio.h>
#include <stdlib.h>
int rand = 10;
// C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决
int main()
{
 printf("%d\n", rand);
return 0;
}
// 编译后后报错:error C2365: “rand”: 重定义;以前的定义是“函数”

所以为了避免访问函数时冲突,在写代码时,可以创造一个属于自己的命名空间,将代码中的变量,函数与类(类似c语言结构体)都存在于当前命名空间的作用域当中。
这样我们可以解释命名空间的意义了:
使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染。

2.1命名空间的定义

定义命名空间只需要使用namespace关键字,后边跟上命名空间的名字,然后接上一对{}即可,花括号中为命名空间成员。

// bit是命名空间的名字,一般开发中是用项目名字做命名空间名。
// 我们上课用的是bit,大家下去以后自己练习用自己名字缩写即可,如张三:zs
// 1. 正常的命名空间定义
namespace bit
{
 // 命名空间中可以定义变量/函数/类型
 int rand = 10;
 int Add(int left, int right)
 {
 return left + right;
 }
}
要注意的是 命名空间可以嵌套,使用嵌套命名空间与普通一样并无区别(使用方法在后面!);
第二个值得注意的点是如果命名了 相同的名字的命名空间时,编译器会自动将其合并,也就是说编译器允许相同名字的空间存在。

2.2命名空间的使用

namespace bit
{
 // 命名空间中可以定义变量/函数/类型
 int a = 0;
 int b = 1;
 int Add(int left, int right)
 {
 return left + right;
比特就业课
命名空间的使用有三种方式:
加命名空间名称及作用域限定符
使用using将命名空间中某个成员引入
使用using namespace 命名空间名称 引入
3. C++输入&输出
新生婴儿会以自己独特的方式向这个崭新的世界打招呼,C++刚出来后,也算是一个新事物,
 }
 struct Node
 {
 struct Node* next;
 int val;
 };
}
int main()
{
 // 编译报错:error C2065: “a”: 未声明的标识符
 printf("%d\n", a);
return 0;
}

上述代码意思的大概意思是 a变量不能直接使用

使用方法有三种:

2,2.1 命名空间加上作用域限定符号(::)

int main()
{
    printf("%d\n", N::a);
    return 0;    
}

2.2.2 使用using将命名空间中某个成员引入

using N::b;
int main()
{
    printf("%d\n", N::a);
    printf("%d\n", b);
    return 0;    
}

2.2.3 使用using namespace 将命名空间引入

using namespce N;
int main()
{
    printf("%d\n", N::a);
    printf("%d\n", b);
    Add(10, 20);
    return 0;    
}

这下大家知道了吧,标题所写为第三种命名空间的使用方法,这种方法将std命名空间直接使用,避免我们在使用函数等还要使用(::)符号,当我们做一些小项目的时候是完全可取的。

本次的分享到这里就结束了,感谢大家的观看!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值