C++ 学习笔记

来源:互联网 发布:音域测试软件 编辑:程序博客网 时间:2024/06/16 05:09

C++学习笔记

1.Namespaces 命名空间

把逻辑上相关联的东西放在一起,用namespaces 给他起一个名字 ??? 名字后面没有分号,名字(函数、数据等)叫这个名字空间的成员实现namespace 是实现接口与实现分离的关键。我们用标准的c++ 的 std; 这是using 指令使用命名空间,实现模块化程序设计,实现接口与实现的分离。   (我只需要关注接口,而不需要关注实现)C++ 允许为一个namespace 声明多个同名的namespace 接口 ,但是实际操作中,我们并不会这样去实现,而是用一个不同的名字,但是内部的实现相同 这就是namespace 面对不同的用户,不同的使用者的一般做法.namespace parser {    double expr (bool) ; // 非定义声明    double prim (bool get) {/*  */}}namespace parser {    double prim (bool);}double parser :: prim (bool get) {    // 具体实现}:: 表示约束符 
  • 声明 定义性声明,非定义性声明 、

2.编译过程

  1. compile 源文件 —— 目标文件
  2. build 目标文件 —— 可执行文件
  3. run 执行 exe

  4. 接口 (外界可以看到的成语只要能看到就可以)

所有命名空间中的非定义声明,接口应该与实现相分离 (也可以不分离,但是一般会分离)

使用约束符 :: 来确定约束的函数的命名空间,约束符有自己的作用域和函数的作用域一样。

4.using 声明

在成员的实现内,对特定的namespace 的特定成员使用 using 声明,约束范围在该 namespace 的所有实现之内. 注意using 的作用域就好了

出现在两种位置

  1. namespace 接口中
  2. 函数定义中

`using function :: prim(bool);

5.using 指令

using namespace error; 使用完 using 指令之后,在其作用域内,都是使用这个名字空间中的成员

出现的位置 :

  1. 函数的定义中
  2. namespace 接口中 (所有使用该 namespace 中命名都在使用的命名空间中找)

6.总结

  1. namespace 引入了成员和接口的概念
  2. 接口和非定义性声明的异同
原创粉丝点击