第7章 预处理以及内存管理

来源:互联网 发布:外婆的澎湖湾 知乎 编辑:程序博客网 时间:2024/05/20 03:05

1、预处理是指在进行编译的第一遍扫描之前所作的工作。预处理由预处理程序负责完成,当对一个源文件进行编译时,系统将自动引用处理程序对源程序中的预处理部分做处理,处理完毕自动进入对源程序的编译。


2、宏定义称为宏代换,宏替换,简称宏。宏最重要的作用就是自动产生代码。

宏定义是C语言提供的3种预处理功能其中一种,这3种预处理分别是:宏定义,文件包含和条件编译。

 

宏定义与操作符的区别:

1)宏定义是替换,不做计算,也不做表达式求解;

2)宏定义的替换在编译前进行,所以不占用内存;

3)宏的展开不占运行时间,只占编译时间,而操作符则占运行时间;

 

3、具有宏调用的源程序被汇编时,汇编程序将每个宏调用进行宏展开。宏展开实际上是用宏定义时设计的宏体去代替指令名,并且用实际参数一一取代形参。

 

4、include的使用方式有#include<>#include""两种。


前者认为头文件是标准头文件,编译器将会在预定义的位置查找该头文件,这些预定义的位置可以通过设置查找路径环境变量或者通过命令行选项来修改。(标准头文件在系统文件目录下查找)


后者认为头文件是非系统头文件,也是自定义的头文件,非系统头文件的查找通常开始于源文件所在的路径。(用户自定义文件会依次在用户目录的C++安装目录和系统文件中查找)

 

补充:数据类型长度



5、new:申请到一段指定数据类型大小的内存,使用方式为 指针变量 =new 数据类型。

new使用后处理3个事情:

1)计算指定数据类型需要的内存空间大小;

2)正确的指针类型;

3)分配内存,按照语法规则,初始化所分配的内存;

 

注意:当一个指针接受delete操作后,它又变成一个“指向不明”的指针。尽管编程者可以通过它还是指向原来的地址,然而,事实上那个变量已经被delete“拆迁”掉。

new/delete用于分配和释放单个变量空间,而new[]和delete[]用于分配连续多个变量的空间。

 

6、虚函数的主要作用是建立抽象模型,从而可以达到方便扩展系统的目的。

纯虚函数是指被表明为不具体实现的虚函数,是一种特殊的虚函数。

 

虚函数必须是基类的非静态成员,其访问权限可以是protect或public。虚函数扩展了派生类对象中隐藏基类函数的概念,当程序处于相似类家族的异构对象集合时,要使用这些函数。

 

一般,基类中不能对虚函数给出有意义的实现,而是把它说明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

 

纯虚函数和虚函数区别:纯虚函数是虚函数的一个子集,用于抽象类,含有纯虚函数的类就是抽象类,不能生成对象。

 

纯虚函数用来定义没有意义的实现,用于抽象类中需要交给派生类具体实现的方法。

 

原创粉丝点击