博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ (一) 命名空间
阅读量:4284 次
发布时间:2019-05-27

本文共 1183 字,大约阅读时间需要 3 分钟。

  • 概念
namespace 改变(增强或减弱)了符号的链接属性用来替代 C 语言中 static 和 extern 关键字.
既然提到了链接属性,肯定是多文件之间的符号的互相引用问题	在C语言中通过 extern 来解决问题	在C++语言中也可以通过extern 来解决问题,新增了namespace 来解决问题	一个namespace标识了一个scope(范围)(在一个scope内,可以自由引用.在不同的scope,需要通过特定的方式来引用)	并通过将不同namespace 命名为不同的名字,将名字作为id来索引,来引用 以xxx命名的namespace对应的scope 中的 符号.
- 默认命名空间一个cpp文件默认为一个scope,对应一个namespace,这个namespace 为 该文件的 默认命名空间.(默认命名空间不用语法创建,一个cpp文件在诞生(touch)之初,就是一个namespace)main 函数 只能存在于默认命名空间.- 有名命名空间在该cpp文件中,可以通过语法定义一个命名空间 A ,然后在命名空间 A 中定义 函数 变量 类型 等.可以在其他文件D中 引用该命名空间 A ,然后直接应用A中的定义的 函数 变量 类型.等价于C语言中的在D文件中extern 声明A中定义的函数 变量 类型.(在C语言中,类型不可以extern)- 匿名命名空间在该cpp文件B中,可以通过语法定义一个匿名命名空间,然后在该匿名命名空间 中定义 函数 变量 类型 等.在其他文件中 不可以引用B文件匿名命名空间中定义的 函数 变量 类型.等价于C语言中的在B文件匿名命名空间中的定义的 函数 变量 类型 前面加了 static.(在C语言中,类型前面不可以加static)- 嵌套命名空间在一个cpp中创建一个命名空间E,此时已经是嵌套命名空间(E在默认命名空间内)更深层的命名空间引用更浅层命名空间中定义的函数 类型 变量, 直接引用即可更浅层的命名空间引用更深层命名空间中定义的函数 类型 变量, 需要加前缀(例如在默认命名空间下引用E命名空间中定义的func函数,需要这样做 E::func1();
命名空间的使用
  • 同一文件定义与引用
同一文件内使用namespace(1)namespace的三种引用方法// 方式一ace::Mutex mutex;// 方式二using ace::Mutex;Mutex mutex;// 方式三using namespace ace;Mutex mutex;
  • 不同文件定义与引用
不同文件内使用namespace(1)namespace的三种引用方法
命名空间分类
  • 从怎样改变链接属性来看
命名空间默认命名空间匿名命名空间嵌套命名空间
  • 从编写者来看
系统(???)自带命名空间自己写的命名空间

转载地址:http://nwigi.baihongyu.com/

你可能感兴趣的文章
ARM处理器寄存器
查看>>
汇编语言学习
查看>>
ARM寻址方式
查看>>
uboot工作流程分析
查看>>
不錯的技術論壇
查看>>
GDB 常用參數
查看>>
pthread man page
查看>>
Linux 如何修改 root 密碼
查看>>
nc 傳輸
查看>>
vi 與 vim 的指令整理
查看>>
console & telnet判斷
查看>>
sqlite3
查看>>
關於如何快速切換目錄(Linux)
查看>>
Save Time with minicom macros
查看>>
svn : how to set the executable bit on a file?
查看>>
vim 取代指令
查看>>
git 修改過檔案後,如何commit上server
查看>>
git log 應用
查看>>
Git 版本控制系統(3) 還沒 push 前可以做的事
查看>>
Git 基礎 - 檢視提交的歷史記錄
查看>>