我们首先来看库与接口
从库与接口角度来讲
实际上C/C++的程序包括了两类文件
一类为源文件 一类为头文件
在实际编程的过程中
源文件往往是以“.cpp”后缀名字
进行保存
而头文件有时是以“.h”
有时是以“.hpp”
还有的时候没有后缀名字来保存
至于用什么样的后缀名字来保存头文件
事实上无关紧要
有没有“.h”、“.hpp”
并不影响头文件的包含
但是对于编译器来讲
使用一个“.h”或“.hpp”
来对头文件进行命名
有助于编译器更好地管理程序
所以 我们设计特定的库
就包括源文件和头文件两个部分
库和原先设计的那些程序是不一样的
同学们要特别记住
当设计一个C/C++程序代码的时候
在每一个程序中必须编写main函数
前面说过 程序总是从main函数的
第一条指令开始执行
然后到main函数的最后一条指令
执行完毕的时候
程序就会结束
这是程序运行的基本的要求
但是设计库的时候情况就不一样了
库从本质上来讲是不会独立地运行的
那就意味着不需要为它编写main函数
所以从库的设计角度来讲
源文件就包括了具体的实现代码
而头文件则提供了库的接口
想使用库就要通过库的接口来使用
正常情况下也就是“.h”、“.hpp”
这样的头文件
有了这样的库有什么好处
对于库的使用者来讲
最大的优势就在于使用库的时候
不需要了解这个库的实现细节
只需要知道“.h”头文件就可以了
不需要去了解库所对应的“.cpp”文件
里面具体的代码是如何实现的
想使用一个函数
那就直接看函数的原型
这个情况是非常常见的
比如说如果想去学开车
那就去驾校
你需要了解发动机、整个汽车的
工作原理吗
又不学修车 只需要学使用它
不需要知道原理的
对于库的使用者也一样
只需要知道库该怎么用就行了
并不需要知道库里面的每一个函数
到底是如何实现的
库和接口的优势就体现在这个地方
C++的标准库提供了一系列的功能
有很多很多个接口
合在一起统称为标准库
标准库实际上包括了两个部分
一类是C的标准库
一类是C++的标准库
早期的C语言提供的标准库
包括了一些基本的标准的输入输出流、
一些工具、辅助函数、字符串
变成了C++程序设计语言之后
C++又提供了自己的标准库
C++的标准库和C标准库是不一样的
这是为C++的程序代码所使用的
包括输入输出流的库
还有一些特定的字符串类
另外还提供抽象的标准模板库
同学们在写程序的时候
既可以使用C的标准库
也可以使用C++的标准库
有一点需要特别注意
数学库在Linux操作系统下面
处理的方式和Windows是不太一样的
数学库本身使用的头文件
在C的代码下面用的是“math.h”
到了C++的程序代码下边呢
使用的是“cmath”
库文件本身是“libm”
链接它的时候应该使用g++ –lm main.cpp
如果使用到了“cmath”
数学库里面的某一个函数
那么就必须把数学库链接进去
刚才讲了在Linux操作系统下面
数学库的处理方式
和Windows是不一样的
在windows下面“cmath”事实上
就是C标准库中的一部分
但是在Linux操作系统下边
数学库是单列的
缺省的时候是不链接数学库的
所以如果链接 那你就用“-l”
链接特定库的选项
后面跟着的就是库的名字
在数学库里面
提供了一系列的数学函数
比如说三角函数、反三角函数、
幂函数、指数函数、对数函数
可以直接用
具体有哪些函数就不解释了
同学们打开帮助手册很快就能够查到
第二个就是工具与辅助函数
对应的头文件是“stdlib.h”
在C++下面用“cstdlib”
提供了一系列常用函数
比如讲exit、free、malloc、rand、srand
这是非常常用的五个函数
exit最主要的目的是退出整个程序的执行
free和malloc是在C下边进行
动态内存分配的函数
以后会解释
最后两个函数rand和srand
用于生成一个随机数
待会就要用这两个函数
来进行随机数库的设计和开发