C++特性
1-1 C++的由来
C/C++源自于贝尔实验室,当初其原创者BjarneStroustrup以C作为基本的架构,再引入面向对象的概念,从而形成了最初的C++语言。
因此,C++可以说是包含了整个C语言,也就是说几乎所有的C语言程序,只要进行微幅的修改,甚至于完全不需要修改,便可正确地在C++环境中执行。
所以C语言程序在编译程序上直接将扩展名c改为cpp,即可编译成C++语言程序。
1-1-1 C与C++的关联
C++属于一种编译式语言,也就是使用编译程序(compiler,或称为编译器)来将源代码程序转换为机器可读取的可执行文件或目标程序,不过编译程序必须先把源程序读入主存储器后才可以开始编译。
而翻译后的目标程序可直接对应成机器代码,故而可在计算机上直接运行,而不需要每次运行都重新进行翻译,因此运行速度自然较快。
但是,源程序每修改一次,就必须重新经过编译程序的编译,才能保持其运行文件为最新的版本。
1-1-2 认识面向对象设计
- 三大特性:
- 封装
所谓封装(Encapsulation),是使用“类”来实现“抽象数据类型”(ADT)。
所谓“抽象”,是让用户只能接触到这些方法(函数),而无法直接使用数据,即符合信息或数据隐藏的要求,这就是“封装”的主要作用。 - 继承
继承(Inheritance)类似现实生活中的遗传,允许我们去定义一个新的类来继承现有的类(Class),进而使用或修改继承而来的方法(Method),并可在子类中加入新的数据成员与函数成员。 - 多态
多态(Polymorphism)也是面向对象设计的重要特性,可让软件在开发和维护时达到充分的扩展性。简单地说,多态最直接的定义就是让具有继承关系的不同类对象可以调用相同名称的成员函数,并产生不同的响应结果。
1-2 我的第一个C++程序
1-2-1 编写程序
#include <iostream> //1、包含iostream头文件,C++中有关输入/输出的函数都在这个头文件中定义。
#include<cstdlib> //2、cstdlib是标准函数库的缩写,有许多实用的函数,包括第9行所使用的system()函数。
using namespace std; //3、使用标准链接库的命名空间std。
int main() //4、main()函数为C++主程序的进入点,其中int是整数类型。
{
cout << "我的第一个C++ 程序" << endl; //5、cout是C++语言的输出指令,其中endl代表换行。
//打印字符 /* 6、 C++的注释指令。*/
system("pause"); //7、目的是让程序输出结果暂停,等用户按下任意键后才会退出程序的输出窗口。
return 0; //8、 因为主程序被声明为int数据类型,所以必须返回(return)一个值。
}
1-2-3 编译程序
- 目标文件(“*.obj”) :
就是用户开发的源代码在经过编译程序编译后所产生的正确的机器语言代码(或简称机器码),它可让计算机明白应该执行的指令与操作。 - 源代码文件(*.cpp”)
源代码文件是一种纯文本文件,是用户自行编写的源代码
1-3 程序架构简介
1-3-1 头文件区
头文件中通常定义了一些标准函数或类以便外部程序来合法引用,在C++中是以预处理器指令“ #include ”来完成这个“引用”的操作——包含头文件。
- 注意:
以“< >”方式包含头文件,就必须确认头文件是否位于编译环境的默认路径。
以“" "”的方式来包含头文件,那么进行程序编译时便只需要确认所包含的头文件是否与程序文件位于相同的路径。
1-3-3 主程序区——main( )函数
main()是一个相当特殊的函数,代表着任何C++程序的进入点,也唯一且必须使用main作为函数名称。
也就是说,当程序开始执行时,一定会先执行main()函数,而不管它在程序中的位置,编译程序都会找到它开始编译程序的内容,因此main()又称为“主函数”。
返回值 为 void 时有些系统不能编译通过。
最好main()函数都声明为int类型。
1-3-5 输入/输出功能简介
- 链接程序(链接器)
由于用户编译的C++程序中可能会使用到函数库(扩展名为*.lib)中的函数,或者一个程序可能分为数个文件来开发,这些文件在编译为目标文件后,必须通过链接程序(linker,或称为链接器),最后才会产生可执行文件(扩展名为*.exe)。 - 编译程序与解释程序区别
编译程序可将源代码程序分为数个阶段转换为机器可读的可执行文件。经过编译后,会产生“目标文件”(.obj)和“可执行文件”(.exe)两个文件。源代码程序每修改一次都必须重新编译。不过,经过编译后所产生的可执行文件可直接对应成机器码,故可在计算机上直接运行,不需要每次运行时都重新翻译,因而运行速度自然较快。
解释器(Interpreter)可对高级语言的源代码进行逐行的解释执行,每解释完一行程序代码并执行完后才会再解释下一行。解释的过程中如果发生错误,解释就会立刻停止。由于使用解释器翻译的程序每次执行时都必须再翻译一次,因此运行速度较慢。不过因为仅需存取原始程序,不需要再转换为其他类型文件,所以所占用的内存较少。
1-4 其他问题
- C++的编写规则四个部分
预处理区、程序区块、程序语句和程序注释。 - 集成开发环境
所谓集成开发环境,就是把有关程序的编辑(Edit)、编译(Compile)、执行/运行(Execute/Run)与调试(Debug)等功能集成到同一操作环境下,简化程序开发的步骤,让用户只需通过此单一集成的环境即可轻松编写、编译、调试和运行程序。 - 结构化程序设计
“自上而下法”是将整个程序需求从上而下、从大到小逐步分解成较小的单元,即“模块”(module),这样使得程序员可分别开发各个模块,减轻设计者的负担、使程序的可读性变高,同时对于日后程序的维护也容易许多。
“结构化程序设计”(Structured Programming)的核心精神就是“自上而下的设计”与“模块化设计”。例如,在Pascal、Fortran、C语言中,这些模块称为“过程”(procedure)或“函数”(function)。 - 自由格式(free format)
也就是只要不违背基本语法规则,就可以自由安排程序代码的位置。
例如,每行语句以分号(;)作为结尾与分隔,中间有空格符、tab键、换行都算是空白(white space),也就是可以将一行语句拆成好几行,或将好几行语句放在同一行。