c语言和c++中的命名空间

命名空间(namespace)的本质是可以更好的控制标识符的作

用域

命名空间可以存放:类 函数 变量 结构体。。。。。。

1.名字控制:

创建名字是程序设计过程中给一项最基本的活动,当一个项目

很大时,它会不可避免地包含大量名字。c++允许我们对名字

的产生和名字的可见性进行控制。

之前在学习c语言的时候可以通过static关键字来使得名字只得

在本编译单元内可见,在c++中可以通过一种命名空间来控制

2.c++命名空间

在c++中,名称可以时符号常量、变量、函数、结构、枚举、

类和对象等等。工程越大,名称互相冲突性的可能性越大,

另外使多个厂商的类库使,也可能导致名称冲突,为了避免

在大规模程序设计中,以及程序员在使用各种各样的库时,

这些标识的命名发生冲突,标准c++引入关键字namespace

(命名空间/名字空间/名称空间),,可以更好的控制标识符

的作用域。

3.命名空间使用语法

#include<iostream>

using namespace std;

//命名空间的定义必须定义在全局范围

//命名空间下可以存放 变量 函数 结构体 类

//命名空间可以重名,重名的命名空间相当于做合并操作

//命名空间可以嵌套命名空间

//命名空间是可以去取别名的 namespace newname=oldname

int a = 30;

namespace A

{

int a = 10;

void fun() {

cout << "hello namespace" << endl;

};//函数

struct abc {};//结构体

class bcd {};//类

}

namespace newA = A;

namespace B

{

int a = 10;

int b = 15;

namespace C

{

int a = 25;

}

}

namespace D

{

void foo(int agr);

}//这个是属于D作用域下的函数

void D::foo(int agr) {

cout << agr << endl;

};//这个是属于全局作用域下的函数

//两个函数不冲突可以一起使用

void test03() {

D::foo(120);

}

//注意:如果命名空间没有名字 那么这个命名空间内的所有成员都被加上了static修饰(意思就是该命名空间只能在当前文件内使用,属于内部链接属性)

namespace {

int s = 88;

}

int main()

{

cout << A::a << endl;

cout << B::b << endl;

cout << B::a << endl;

cout << a << endl;

A::fun();

cout << B::C::a << endl;

cout << ::s << endl;

test03();

cout << newA::a << endl;

return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值