C++入门
命名空间
C语言的缺陷
//此时不会发现冲突
#include<stdio.h>
int rand=0;
int main()
{
printf("%d\n",rand);
}
但是如果加了另外一个 C头文件 stdlib.h
就会发生命名冲突错误 :"rand"重定义;以前的定义是函数
C语言 只能通过改变量名来 避免命名冲突错误
C++解决方法:命名空间域
#include<iostream>
namespace bit//命名空间域
{
int rand=0;
}
int main()
{ //先从局部找 -> 全局
printf("%p\n",rand);//输出的是rand函数的地址
printf("%d\n",bit::rand);//指定在bit域中寻找 输出 0
}
- 命名空间内可以放 变量,函数,结构体等等…
- 命名空间可以嵌套
- 如果命名空间 名字一样,那么就和合并
域作用限定符 ::
#include<stdio.h>
int a=0;
int main()
{
int a=1;
printf("%d\n",a);//输出的是局部变量的a=1
//::域作用限定符 ( :: 前的是指定区域,若为空,则为全局域)
printf("%d\n",::a);//找的是全局的这个a=0
}
using
因为 命名空间::繁琐
因此可以使用 using namespace (命名空间)
含义:先从全局域去找,如果没有,再去带只开的 (命名空间去找)
因此调用的时候可以 不用写 (命名空间)::,即可调用
using namesapce
(命名空间) 会将命名空间的内部成员暴露出来- 因此可以将常用的函数 写成
using std::cout;
using std::cin;