第2章
Visual C++面向对象编程Visual C++Object Oriented Programming
第2章C++语言基础
2.1 C++概述
C++语言是由贝尔实验室的Bjarne Stroustrup 在1980年创建的。自90年代后,C++越来越受到重视并得到广泛的应用。
本节主要内容:
2.1.1C++语言的历史和特点
2.1.2C++程序与C程序
2.1.3C++对C的一般扩充
2.1.1 C++语言的历史和特点
●C++由C扩充而来,1980年Bjarne Stroustrup博士对C语言进行了扩充,引入了类的机制,最初称为“带类的C”。
●1983年正式取名为C++,加入了运算符的重载、引用、虚函数、模板等功能。1994年制定了ANSI C++标准草案,1998年11月被国际标准化组织(ISO)批准为国际标准。
●C++除了与C兼容,还继承了C的以下特点:丰富的运算符和数据类型、结构化的程序设计方法、高效的机器代码、良好的可移植性。
●支持面向对象程序设计的方法。
●混合型语言:也支持面向过程程序设计。
●既支持描述系统,又适于编写应用软件。
●C++的错误检查机制强,提供了异常处理功能。
C++编译器
C++有很多成熟的编译器:
●Visual C++
●Inprise(被Borland兼并)的C++Builder ●Borland的Borland C++
●IBM的VisualAge C++
2.1.2 C++程序与C程序
C语言程序:
/*这是一个简单的C程序:simple.c*/
#include
void main(void)
{
printf(“Hello World!\n”);/*输出字符串*/ }
用C++语言编写同样功能的程序
C++语言程序:
//这是一个简单的C++程序:simple.cpp
#include
void main(void)
{
cout<<"Hello World!\n";//输出字符串}
程序运行后在屏幕上输出:
Hello World !
C++程序与C程序的比较:
●C++程序与C程序的结构完全相同。
●C源程序文件的扩展名为C,C++源程序文件的扩展名为
CPP。
●C注释使用符号“/*”和“*/”,表示符号“/*”和“*/”
之间的内容都是注释;C++除了支持这种注释,还提供了一个双斜线“//”注释符,表示“//”之后的本行内容是注释,注释在行尾自动结束。
●C程序所包含的标准输入、输出的头文件是stdio.h,输入、
输出通常通过调用函数来完成;而C++程序可以包含标准输入、输出流的头文件iostream.h,输入、输出可以通过使用标准输入、输出流对象来完成。
C++程序基本结构:
●一个C++程序可以由多个函数构成;(类)
●每个程序都从主函数main()开始执行,从主函数返回时结
束执行;
●组成程序的语句主要包括声明语句和执行语句;
●声明语句用于声明变量和函数,变量声明语句说明变量的
名称和数据类型,函数声明语句说明函数的名称、参数类型和返回值;
●执行语句包括:赋值语句、表达式语句、函数调用语句和
流程控制语句等,它们写在一个函数中(包括主函数)。
例
例输入一个学生三门课的成绩,计算其平均值,并根据其值输出评语。
#include
void main()
{
int math,chem,phy,ave;
cout<<"Enter the scores:";
cin>>math>>chem>>phy;
ave=(math+chem+phy)/3.0+0.5;//0.5用于四舍五入if(ave>=90)//使用if~else if语句cout<<"Excellent"<<'\n';
else if(ave>=60&&ave<90)
cout<<"Pass"<<'\n';
else
cout<<"Fail"<<'\n';
}
C++程序的书写格式
●一行写一条语句。
●长语句可写在多行,但不能将一个单词分两行写。
●为了提高可读性,采用合理的缩格书写方式。
●大括号“{”和“}”占一行。
●为源代码加入注释,使用“//”和“/*”、“*/”。
2.1.3 C++对C的一般扩充
(1)当函数定义放在函数调用之后时,C程序函数原形(function prototype)有时可省略,而C++函数原形(声明)必不可少。一个不带参数的C函数原形必须使用void,而C++可以使用空参数列表。C++还要求函数所有参数在函数原形的圆括号中声明。
(2)在C语言中,函数和语句块(花括号“{}”之间的代码)的所有变量声明语句必须放在所有执行语句之前。而C++中变量声明语句不要求放在函数和语句块的开始位置,可以把变量声明放在首次使用变量的附近位置,这样可提高程序的可读性。
(3)C++用new和delete运算符取代C的内存分配和释放函数malloc()和free()。
(4)标准C++提供了字符串类,可以替代C函数库中的字符数组处理函数。
(5)进行输入、输出操作时,C++用控制台输入、输出流对象(在头文件iostream.h中进行了类的声明)替代C 的stdio函数库,利用“>>”流提取运算符或“<<”流插入运算符,分别将数据对象从输入流提取出来或插入到输出流,从而完成数据的输入和输出。
使用C++面向流的输入、输出方式提高了程序的可读性,减少了错误的发生。
例
例编写程序利用标准输入流接收用户从键盘输入的数据,利用标准输出流将运算结果输出到屏幕。
#include
void main(void)
{
cout<<"please enter the value of x,y,z:";//输入提示
int x,y,z;//声明变量
cin>>x>>y>>z;//从键盘读取数据给变量x、y、z cout<<"The sum is"< } 程序运行的结果为: please enter the value of x , y , z :2 4 6 The sum is 12 2.2 C++程序基本要素 程序由语句组成,语句由基本要素组成。任何一种程序设计语言都有自己的一套语法规则以及按照语法规则构成的元素,程序基本要素就是这样一种具有独立语法意义的元素。C++程序基本要素主要包括标识符、关键字、常量、变量、运算符和表达式等。 2.2.1 标识符和关键字 ●标识符是程序员或系统定义的符号,用以标识变量、函数、对象等。 ●标识符由字母、数字和下划线组成,它必须以字母或下划线开始。 ●为标识符取名时,尽量使用能够反映其用途的单词或缩写,这样可提高程序的可读性。 例如: x,y,sum,length,Area,Myfun,m_xPos,CPerson,person1 关键字 ●关键字是C++编译器预定义的、具有固定含义的保留字, 在程序中它们不能被作为一般的标识符使用。 ●C++增加了C不具有的关键字,并且不同C++编译器含 有不同的关键字。 例如: auto,bool,break,case,char,class,const,continue,default,delete,do,double,else,enum,extern,false,float,for,friend,goto,if,inline,int,long,new,operator,private,protected,public,return,short,signed,sizeof,static,struct,switch,template,this,true,try,typedef,union,unsigned,using,virtual,void,while 2.2.2 常量和变量 ●在程序中使用的数据有常量和变量两种形式; ●常量是不能被程序改变的固定值; ●变量是可以被程序改变的数据。 ●常量和变量的主要区别在于:常量不占内存空间,不能为常量赋值;而变量需要占内存空间,可以给变量赋不同的值。 ●不管常量还是变量,程序中使用的每一个数据都属于一种特定的数据类型。 ●在使用变量之前,必须先利用标识符声明变量。 变量声明的形式 变量声明的一般形式如下: <数据类型> <变量名1> [=<初始值1>], <变量名2> [=<初始值2>],… ; 变量声明语句说明了变量的名称和数据类型,程序中通过变量名来存取其中的数据,数据类型定义了变量的存储结构和可以进行的运算。编译程序要为声明的变量分配存储空间,并可以给变量赋一个初始值。 例如: int x; float radius=123.56 int x,y=100; 2.2.4 运算符和表达式 运算符: ●运算是对数据进行加工的过程,表示各种不同运算的符 号称为运算符,而参与运算的数据称为操作数。 ●运算符实质上是系统预定义的函数名,而进行运算就是 调用一个函数。 ●按运算符和操作数的运算性质,运算符可分为算术运算 符、逻辑运算符、关系运算符和其它运算符(见表2-1)。 例如:+、-、*、/、%、++、()、=、+=、->、&&、<、<=、new、delete 表达式: ●一个表达式由常量、变量、函数调用和运算符组成,每 个表达式都将产生一个值,并且具有某种类型(称为该表达式的类型)。 ●表达式隐含的数据类型取决于组成表达式的操作数的类 型。 ●当表达式中的操作数都是常量时,称这个表达式是常量 表达式。 ●在对一个表达式求值时,优先级高的运算符先运算,优 先级低的运算符后运算。 ●运算符的结合性:右结合性和左结合性 例如:x+y,area=PI*radius*radius, (a>b) && (x<=y)