c++中存在许多与空间,时间相关的内容,下面从空间,时间角度了解c++。
空间:
内存空间: 进程内存空间分为四块: 1. 代码区 2. 全局变量,静态变量区 3.栈区 4. 堆区(程序员使用的内存)
命名空间: 为了避免命名冲突。常需将单独的模块命名新的空间,则在该命名空间中可以不考虑命名出与重名的问题,需要使用该命字空间内的对象或函数需引用该命名空间。 namespace name1 { ...... } using namespace name1; 如std标记模板库命字空间。
作用域: 就是对象发挥作用的范围。 如全局变量的作用范围是整个程序中可见,函数域中的局部变量只对当前函数可见。类型域中的对象只在该类型域中可见,如类对象。作用域也包含命名空间。
时间:
从程序开发,编译,运行的角度划分时间段将程序分为: 预处理时间,编译时间,链接时间,运行时间。
预处理时间: 程序开发完后,还没编译前,编译器将做一些预处理。 将像是提交报告前,再整理一下资料。 预处理阶段主要包括:1. 替换宏语句 (#define) 2. 加载头文件,将#include 命令用原.h文件替换(#include).3.条件编译,根据编译条件指定哪部分被编译,哪部分不部编译(#if #else). 预处理的目的是为了编译做准备,从上述三条预处理命令可看出,是为了用户更好更方便的编辑,开发程序。
编译时间: c++编译就是编译各个.cpp文件,.h文件在预处理阶段已处理包含进.cpp中。编译阶段主要检验变量,函数是否有声明,语句语法是否合理,然后将文本翻译成一个个目标文件,最后由链接器链接成可进行文件。编译阶段还为c++中的模板,模板类确定其数据类型,并进行编译。
链接时间: 将各个编译好的obj目标文件,链接成一个可执行的文件(exe,dll等)。链接主要是处理外部模块引用,帮助建立映射关系。
运行时间:程序占据内存完成功能任务。c++中的多态类则在运行中通过虚表机制实现其多态效果。(多态性是指一段程序能够处理多种类型对象的能力)