第1章 C++相关知识
本章首先复习C++程序结构、三种C++预处理命令、异常处理的一种结构化形式的描述机制和有关面向对象程序设计中的一些基本概念。为学习Qt进行必要的准备。
1.1 C++程序结构
一个程序是由若干个程序源文件组成的。为了与其他语言相区别,每一个C++程序源文件通常以.cpp为扩展名,由编译预处理指令、数据或数据结构定义以及若干个函数组成。代码中,main()表示主函数。无论该函数在整个程序中的哪个位置,每一个程序执行时都必须从main()函数开始,因此,每一个C++程序或者由多个源文件组成的C++项目都必须包含一个且只有一个main()函数。
下面举一个简单的C++程序例子Ex_Simple来说明一下:
其中:
● 行号为3的代码是C++文件包含#include的编译指令,称为预处理指令。
#include后面的iostream.h是C++编译器自带的文件,称为C++库文件,它定义了标准输入/输出流的相关数据及其操作。由于该程序中用到了输入/输出流对象cin和cout,因而需要用#include将其合并到该程序中,又由于它们总是被放置在源程序文件的起始处,所以这些文件被称为头文件(Header File)。C++编译器自带了许多这样的头文件,每个头文件都支持一组特定的“工具”,用于实现基本输入输出、数值计算、字符串处理等方面的操作。
由于iostream.h是C++的头文件,因此这些文件以“.h”为扩展名,以便与其他文件类型相区别,但这是C语言的头文件格式。尽管ANSI/ISO C++仍支持这种头文件格式,但已不建议再采用,即包含头文件中不应再有.h这个扩展名,而应使用C++的iostream。例如:
#include <iostream>
但为了使iostream中的定义对程序有效,还需使用下面名称空间编译指令来指定:
using namespace std; // 注意不要漏掉后面的分号
using是一个在代码编译之前处理的指令。namespace称为名称空间,它是ANSI/ISO C++一个新的特性,用于解决在程序中同名标识存在的潜在危机。
● 上述程序Ex_Simple中的“/*...*/”之间的内容或“//”开始一直到行尾的内容是用来注释的,其目的只是为了提高程序的可读性,对编译和运行并不起作用。正是因为这一点,所注释的内容既可以用汉字来表示,也可以用英文来说明,只要便于理解就行。
需要说明的是,C++中的“/*...*/”用于实现多行的注释,它将由“/*”开头到“*/”结尾之间所有内容均视为注释,称为块注释。块注释(“/*...*/”)的注解方式可以出现在程序中的任何位置,包括在语句或表达式之间。而“//”只能实现单行的注释,它是将“//”开始一直到行尾的内容作为注释,称为行注释。