本文章乃本人读书笔记,记录本人对于此书中不熟悉的地方,特此mark!
第二章 对象的创建与使用
2.1语言的翻译过程
翻译器包含2类:解释器(interpreter) 编译器(compiler)
2.1.1 解释器
2.1.2 编译器
编译器直接把源代码转化成汇编语言或机器指令。C语言可以分段编译各段程序。(separate compilation)
2.1.3 编译过程
C/C++编译时,要对源代码进行预处理。预处理器(preprocessor)。
编译分2遍进行,第一遍,对处理过的代码进行语法分析,编译器把源代码分解成小的单元并把它们按树形结构组织起来。第二遍,由代码生成器(code generator)遍历语法分析树,把树的每个节点转化成汇编语言或机器代码。
2.1.3.1
类型检查是编译器第一遍中完成的。
2.2 分段编译工具
2.1.1 声明与定义
2.2.1.1 函数声明的语法
2.1.1.2
C语言中,声明 int func2();表示一个可带任意参数(任意数目、类型)的函数,C++语言中它意味着不带参数的函数。
2.2.1.3 函数的定义
2.2.1.4 变量声明的语言
int a;声明它并不定义它,即不给它分配内存。 可以用extern int a;extern 可用于函数、变量声明,C语言中不支持extern函数声明。
2.2.1.5
包含头文件要用#include预处理命令,尖括号<>指定文件时,预处理器以特定方式寻找文件。用双引号时,从当前目录开始寻找。
2.2.1.6 标准C++include语句格式
老版使用.h 新版没有.h,要使用C标准库的头文件,加上C就行。
2.2.2 连接
2.2.3 使用库文件
2.2.3.1 连接器如何查找库
当C/C++ 要对函数或变量进行外部引用时,有2种处理方式。如果连接器没有在目标模块中找到函数或变量的定义,就去查找库。库有某种索引方式,连接器不必查找库里所有目标模块,只需按浏览索引。,找到后,仅仅是库中所包含定义的目标模块加入连接,而不是整个库。
2.2.3.2 秘密的附加模块
创建C/C++可执行程序时,连接器秘密连接某些模块,其中之一是启动模块,对程序的初始化。,初始化例程建立堆栈。
2.2.3.3 使用简单的C语言库
如果要用到多线程编程,最好使用POSIX线程库。
2.3 编写第一个C++程序
2.3.1 使用iostream类
2.3.2 名字空间
2.3.3 程序的基本结构
C++中 ,main总是返回int类型。
2.3.4 “hello world”
2.3.5运行编译器
GNU C++编译器 g++ hello world
2.4 关于输入输出流
2.4.1 字符数组的拼接
2.4.2 读取输入数据
cin( console input) oct 8进制hex 16进制格式
2.4.3 调用其它程序
system()函数在头文件<cstdlib>
2.5 字符串简介
string类
2.6文件的读写
打开文件读写操作,必须包含<fstream>。该文件自动包含<iostream>。
为了读而打开文件,要创建一个ifstream对象,用法与cin相同。
为了写而打开文件,要创建一个ofstream对象,用法与cout相同。
getline()函数用于把一行读入到string对象中(以换行符结束)getline的第一个参数是ifstream对象,从中读取内容,第二个参数是stream对象。
如果getline成功读入一行返回true,否则返回false。
2.7 vector简介
标准容器类(container)
c++标准其实不包含STL,STL由Alex Stepanov给C++标准委员会的,c++进行了修改后放进去的。
vector类是一个模板(template)