第二讲:C++对C的扩充(1)
本讲基本要求
掌握:C++的输入、输出;定义常变量;函数原形的声明的方式;函数的重载与函数模板。
理解:C++程序的基本构成;C与C++程序的主要区别。
了解:C++基本程序的设计。
重点、难点:C++的输入、输出;定义量变量;函数原形的声明的方式;函数的重载与函数模板。
一、从C到C++
1、问题的提出:
C语言是结构化和模块化的语言,它是面向过程的。在处理较小规模的
程序时,程序员用C语言较为得心应手。但是当问题比较复杂、程序的规模比较大时,结构化程序设计方法就显出它的不足。c程序的设计者必须细致地设计程序中的每一个细节,准确地考虑程序运行时每一时刻发生的事情,例如各个变量的值是如何变化的,什么时候应该进行哪些输入,在屏幕上应该输出什么等。
这对程序员的要求是比较高的,如果面对的是一个复杂问题,程序员往往感到力不从心。当初提出结构化程序设计方法的目的是解决软件设计危机,但是这个目标并未完全实现。
2、解决方案:
为了解决软件设计危机,在20世纪80年代提出了面向对象的程序设计
(object oriented programming,OOP)思想,这就需要设计出能支持面向对象的程序设计方法的新语言。Smalltalk就是当时问世的一种面向对象的语言。而在实践中,人们发现由于C语言是如此深入人心,使用如此广泛,以至最好的办法不是另外发明一种新的语言去代替它,而是在它原有的基础上加以发展。在这种形势下,C++应运而生。C++是由AT&TBell(贝尔)实验室的Bjame Stroustrup博士及其同事于20世纪80年代初在C浯言的基础上开发成功的。C++保留了C语言原有的所有优点,增加了面向对象的机制。由于C++对c的改进主要体现在增加了适用于面向对象程序设计的“类(class)”,因此最初它被Bjarne Stroustrup称为”带类的C”。后来为了强调它是C的增强版,用了C语言中的
自加运算符“++”,改称为C++。
3、标准:
AT&T发布的第一个C++编译系统实际上是一个预编译器(前端编译器),
它把C++代码转换成c代码,然后用c编译系统编译,生成目标代码。第一个真正的C++编译系统是1988年诞生的。C++2.0版本于1989年出现,它作了重大的改进,包括了类的多继承。1991年的C++3.0版本增加了模板,C++4.0版本则增加了异常处理、命名空间、运行时类型识别(RTTI)等功能。ANSIC++标准草案是以C++4.0版本为基础制定的,1997年ANSIC++标准正式通过并发布。但是目前使用的C++编译系统中,有一些是早期推出的,并未全部实现ANSI C++标准所建议的功能。
C++是由c发展而来的,与C兼容。用C语言写的程序基本上可以不加
修改地用于C++,,从C++的名字可以看出它是c的超集。C++既可用于面向过程的结构化程序设计,也可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。
4、C++对C的“增强”,表现在两个方面:
(1)在原来面向过程的机制基础上,对C语言的功能作了不少扩充。
(2)增加了面向对象的机制。
二、最简单的C++程序
为使读者了解什么是C++程序,下面先介绍几个简单的程序。
例1输出一行字符:“This is a C++program.”。
程序如下:
#include<iostream>//用cout输出时需要用此头文件
using namespace std;//使用命名空间std
int main()
{cout<<"This is a C++program.\n";//用C++的方法输出一行
return0;
}
程序运行时输出:
This is a C++program.
本程序和以前见过的c程序有什么不同?
1、在C++程序中,一般在主函数main前面加一个类型声明符int,同时
在main函数的最后加—条语句"return();"即可},即此主函数带回一个整型的函数值)。程序第5行的作用是向操作系统返回0。如果程序不能正常执行,则会自动向操作系统返回一个非零值,一般为-1。
2、在C++程序中,可以使用C语言中的“/*……*/”形式的注释行,还
可以使用以“//”开头的注释。
应注意:它是单行注释,不能跨行。C++的程序设计人员多愿意用这种注释方式,它比较灵活方便。
3、在C++程序中,一般用Cout进行输出。cout是由c和ont两个单词组成的,它是C++用于输出的语句。
4、使用cout需要用到头文件iostream。程序的第l行
"#include<iostream>”是一个预处理命令。文件iostream的内容是提供输入或输出时所需要的一些信息。iostream是i-o-stream三个词的组合
printf函数原型在什么头文件里
请注意:在C语言中所有的头文件都带后缀.h(如stdio.b),而按C++
标准要求,由系统提供的头文件不带后缀.h,用户自己编制的头文件可以有后缀.h。在C++程序中也可
以使用C语言编译系统提供的带后缀.h的头文件,如"#include<math.h>"。
(5)程序的第2行"using namespace std;”的意思是“使用命名空间
std"。
例2求a和b两个数之和。
可以写出以下程序:
//求两数之和(本行是注释行)
#include<iostream>//预处理命令
using namespace std;//使用命名空间std
int main()//主函数首部
{//函数体开始
int a,b,sum;//定义变量
cin>>a>>b;//输入语句
sum=a+b;//赋值语句
cout<<"a+b="<<sum<<endl;//输出语句
return0;//如程序正常结束,向操作系统返回一个零值
}
如果在运行时从键盘输入
123456/
则输出为
a+b=579
例3输入两个数x和y,求两数中的大者。
在本例中包含两个函数。
#include<iostream>
using namespace std;
int main()
{int max(int x,int y);//对max函数作声明
int a,b,c;
cin>>a>>b;
c=max(a,b);//调用max函数
cout<<"max="<<c<<endl;
return0;
}
int max(int x,int y)//定义max函数
{int z;
if(x>y)z=x;
else z=y;
return(z);
}
程序运行情况如下:
1825/(输入18和25给a和b)
max=25(输出c的值)
注意:输入的两个数据间用一个或多个空格间隔,不能以逗号或其他符号间隔。
下面举一个包含类(class)和对象(object)的简单程序,目的是使读者初
步了解C++是怎样体现面向对象程序设计方法的。由于还末系统介绍面向对象程序设计的概念,读者可能对程序理解不深,现在只需有一个初步印象即可。在第2章中将会详细介绍。
例4包含类的C++程序。
#include<iostream>
using namespace std;
class Student//声明一个类,类名为Student {private://以下为类中的私有部分
int num;//私有变量num