C++程序设计 湖南大学 杜四春、银红霞
第 1章 绪论
1.1 C++的发展历史
1.2 C++程序的开发过程
1.3 C++的词法与规则
1.4 面向对象程序设计
1.5 C++程序的构成
C++程序设计 湖南大学 杜四春、银红霞
1.1 C++的发展历史
? C++源于 C语言,而 C语言是在 B语言的基础上
发展起来的。
? 1960年出现了一种面向问题的高级语言 ALGOL
60 。
? 1963年英国剑桥大学推出了 CPL( Combined
Programming Language)语言,后来经简化
为 BCPL语言。
? 1970年美国贝尔( Bell)实验室的 K.Thompson
以 BCPL语言为基础,设计了一种类似于 BCPL
的语言,取其第一字母 B,称为 B语言。
C++程序设计 湖南大学 杜四春、银红霞
? 1972年美国 贝尔实验室的 Dennis M.Ritchie为
克服 B语言的诸多不足,在 B语言的基础上重新
设计了一种语言,取其第二字母 C,故称为 C语
言。
? 1980年贝尔实验室的 Bjarne Stroustrup对 C语
言进行了扩充,推出了“带类的 C”,多次修改
后起名为 C++。以后又经过不断的改进,发展
成为今天的 C++。
? C++改进了 C的不足之处,支持面向对象的程
序设计,在改进的同时保持了 C的简洁性和高
效性。
C++程序设计 湖南大学 杜四春、银红霞
1.2 C++程序的开发过程
? C++语言是一种高级程序设计语言,它
的开发过程与其他高级语言程序开发过
程类似,一般要经过四个步骤:
编辑 编译 链接 执行
C++程序设计 湖南大学 杜四春、银红霞
1.2.1 编辑
是指把按照 C++语法规则编写的程序代码
通过编辑器 ( Borland C++ 5.05,Visual C++
6.0,Turbo C++ 3.0) 输入计算机, 并存盘 。 在
存盘时, C++源文件的扩展名为,CPP。
1.2.2 编译
将编辑好的 C++源程序通过编译器转换为
目标文件 ( OBJ文件 ) 。 即生成该源文件的目
标代码 。
C++程序设计 湖南大学 杜四春、银红霞
1.2.3 链接
将用户程序生成的多个目标代码文件
(,obj) 和系统提供的库文件 (,lib) 中的某些
代码连接在一起, 生 成 一 个 可 执 行 文 件
(,exe) 。
1.2.4 执行
把生成的可执行文件运行, 在屏幕上显示
运行结果 。 用户可以根据运行结果来判断程序
是否出错 。
C++程序设计 湖南大学 杜四春、银红霞
1.3 C++的词法与规则
1.3.1 C++的字符集
? 数字,0,1,2,3,4,5,6,7,8,9。
? 小写字母,a,b,…, y,z。
? 大写字母,A,B,…, Y,Z。
? 运算符,+,-,*,/,%,<, <=, =, >=, >, !=,
= =, <<, >>, &, |, &&, ‖, ∧, ~, ( ),
[ ],{ },->, ?, !,?,?,,,,;,,,
# 。
? 特殊字符,( 连字符或下划线 ) 。
? 不可印出字符:空白格 ( 包括空格, 换行和制表符 ) 。
C++程序设计 湖南大学 杜四春、银红霞
1.3.2 词与词法规则
1,标识符
标识符是对实体定义的一种定义符, 由字
母或下划线 ( 或连字符 ) 开头, 后面跟字母或
数字或下划线 ( 或空串 ) 组成的字符序列, 一
般有效长度是 8个字符 ( 而 ANSI C标准规定 31
个字符 ), 用来标识用户定义的常量名, 变量
名, 函数名, 文件名, 数组名, 和数据类型名
和程序等 。
C++程序设计 湖南大学 杜四春、银红霞
2,关键字
关键字是具有特定含义, 作为专用定义符的单词,
不允许另作它用 。
auto break case char class
const continue default do ddefault
delete double else enum explicit
extern float for friend goto
if inline int long mutable
new operator private protected
public register return short signed
sizeof static static_cast struct switch
this typedef union unsigned virtual
void while
C++程序设计 湖南大学 杜四春、银红霞
3,运算符和分隔符
运算符是 C++语言实现加, 减等各种运算的符号 。
C++语言的分隔符主要是:空格, 制表和换行符 。
4,字符串
字符串是由双引号括起来的字符 。 如, China”,
,C++ Program”等 。
5,常量
C++语言中常量包括实型常量(浮点常量)和整
型常量(十进制常量、八进制常量、十六进制常量)、
浮点常量、字符常量和字符串常量。
C++程序设计 湖南大学 杜四春、银红霞
6,注释
注释是用来帮助阅读、理解及维护程序。在编译
时,注释部分被忽略,不产生目标代码。 C++语言提
供两种注释方式。一种是与 C兼容的多行注释,用 /*和
*/分界。另一种是单行注释,以,//”开头的表明本行
中,//”符号后的内容是注释 。 如下程序:
C++程序设计 湖南大学 杜四春、银红霞
例 1-1:一个简单的 C++程序 。
#include <iostream.h>
void main()
{
cout<<”This is my first C++ program.\n”;
//输出 This is my first C++ program.
/*输出
This is my first C++ program.*/
}
C++程序设计 湖南大学 杜四春、银红霞
1.3.3 书写格式
C++语言程序的书写格式自由度高, 灵活性强,
随意性大, 如一行内可写一条语句, 也可写几条语句;
一个语句也可分写在多行内 。 不过应采用适当的格式
书写, 便于人们阅读和理解 。
为了增加程序的可读性和利于理解, 编写程序时
按如下要点书写:
( 1) 一般情况下每个语句占用一行 。
( 2) 不同结构层次的语句, 从不同的起始位置开
始, 即在同一结构层次中的语句, 缩进同样的字数 。
( 3) 表示结构层次的大括弧, 写在该结构化语句
第一个字母的下方, 与结构化语句对齐, 并占用一行 。
( 4) 适当加些空格和空行 。
C++程序设计 湖南大学 杜四春、银红霞
1.4 面向对象程序设计
面向对象程序设计是在吸取结构化程序设
计的一切优点的基础上发展起来的一种新的程
序设计方法 。 它的本质是把数据和处理数据的
过程当成一个整体 —— 对象 。
面向对象是 C++中的主要概念, 在学习
C++之前首先要了解这些概念 。
C++程序设计 湖南大学 杜四春、银红霞
1.4.1 对象
从一般意义上讲, 对象是现实世界中一个实际存
在的事物, 它可以是有形的 ( 比如一辆汽车 ), 也可
以是无形的 ( 比如一项计划 ) 。 对象是构成世界的一
个独立单位, 它具有自己的静态特征 ( 状态 ) 和动态
特征 ( 操作 ) 。 静态特征即可以用某种数据来描述的
特征, 动态特征即对象所表现的行为或对象所具有的
功能 。
面向对象语言把状态和操作封装于对象体之中,
并提供一种访问机制, 使对象的, 私有数据, 仅能由
这个对象的操作来执行 。 用户只能通过允许公开的操
作提出要求 ( 消息 ), 才能查询和修改对象的状态 。
C++程序设计 湖南大学 杜四春、银红霞
1.4.2 类
类是面向对象语言必需提供的用户定义的数据类
型, 它将具有相同状态, 操作和访问机制的多个对象
抽象成为一个对象类 。
类与对象的关系如同汽车与具体的一辆车的关系。
汽车都能跑,有四个轮子,所有的汽车组成了一个类,
具体到一辆汽车,它具有类的全部特性(能跑,有四
个轮子),是汽车类的一个子集或元素。类给出了属
于该类的全部对象的抽象定义,而对象则是符合这种
定义的一个实体。所以,一个对象又称作类的一个实
例( instance)。
C++程序设计 湖南大学 杜四春、银红霞
1.4.3 封装
封装是面向对象方法的一个重要原则。它有两个
涵义:第一个涵义是,把对象的全部属性和全部服务
结合在一起,形成一个不可分割的独立单位(即对
象)。第二个涵义也称作“信息隐蔽”,即尽可能隐
蔽对象的内部细节,对外形成一个边界(或者说形成
一道屏障),只保留有限的对外接口使之与外部发生
联系。这主要是指对象的外部不能直接地存取对象地
属性,只能通过几个允许外部使用地服务与对象发生
联系。
C++程序设计 湖南大学 杜四春、银红霞
1.4.4 继承
继承是面向对象语言的另一特性。类与类之间可
以组成继承层次,一个类的定义(子类)可以定义在
另一个已定义类(父类)的基础上。子类可以继承父
类中的属性和操作,也可以定义自己的属性和操作。
C++语言支持单继承和多继承,因而具有继承这
一特性所带来的优势,大大增加了程序的重用性。
C++程序设计 湖南大学 杜四春、银红霞
1.4.5 多态性
对象的多态性是指在一般类中定义的属性或操作
被特殊类继承之后,可以具有不同的数据类型或表现
出不同的行为。这使得同一个属性或操作名在一般类
及其各个特殊类中具有不同的语义。
C++程序设计 湖南大学 杜四春、银红霞
1.5 C++程序的构成
C++语言程序由以下基本部分组成 。
1.函数
一个 C++程序是由若干个函数构成的 。 函数分为
库函数 ( 标准函数 ) 和自定义函数 。 库函数一般是由
系统提供的 。 一个完整的 C++语言程序只有一个主函
数 。
2.预处理命令
预处理命令以位于行首的符号,#”开始,C++提
供的预处理有宏定义命令、文件包含命令和条件编译
命令三种。
C++程序设计 湖南大学 杜四春、银红霞
3.程序语句
一条完整的语句必须以分号, ;, 结束 。 程序语
句有如下几类:
( 1) 说明语句
用来说明变量的类型和初值 。
如下面语句是把变量说明为浮点数 。
float a,b,c;
又如下面语句是把变量 sum说明为整型变量, 并赋
初值为零 。
int sum=0;
C++程序设计 湖南大学 杜四春、银红霞
( 2) 表达式语句
由一个表达式构成一个语句,用以描述算术运算、
逻辑运算、或产生某种特定动作,在任何表达式最后
加一个分号就构成了一个语句。如下例由赋值表达式
加“;”就构成一个赋值表达式语句。
( 3) 程序控制语句
用来描述语句的执行条件与执行顺序的语句,C++
语言的控制语句有 9种,如下页所示。其语句中的括号
( )表示其中是条件,~表示内嵌的语句。
C++程序设计 湖南大学 杜四春、银红霞
if ( ) ~ else 条件语句
for ( ) ~ 循环语句
while ( ) ~ 循环语句
do ~ while ( ) 循环语句
continue 结束本次循环语句
break 中止循环式 switch语句
switch 多分支选择语句
goto 转移语句
return 从函数返回语句
C++程序设计 湖南大学 杜四春、银红霞
( 4) 复合语句
复合语句是一种十分重要的语句, 由大括号 {和 }
把一些说明和语句组合在一起, 使它们在语法上等价
于一个简单语句;可由若干简单语句或复合语句组成 。
例如:
if ( a>b )
{ c=a-b;
d=c*a;
}
else
{ c=a+b;
d=c*b;
}
C++程序设计 湖南大学 杜四春、银红霞
( 5) 函数调用语句
函数调用语句是由一次函数调用加一个分号而构
成的一个语句 。
例如:
max(x,y);
( 6) 空语句
空语句:;
即只有分号, ;, 的语句, 什么也不做 。