您好,欢迎访问三七文档
第10章C++语言程序设计基础本章重点讲解C++语言程序设计的初步知识以及C++语言对C语言的扩充,并且介绍C++语言与C语言在语法方面的诸多不同之处。从而可以了解到,有些C语言允许的编程语言规则,对C++编译器并不适用,或者虽然可以编译,其含义是不同的。10.1从C到C++C语言是结构化和模块化的语言,它是面向过程的。在处理较小规模的程序时,程序设计者用C语言较为得心应手;但是当面对的问题比较复杂、程序规模比较大时,程序设计者往往感到力不心。当初提出结构化程序设计方法的目的就是为了解决这一软件设计危机,但遗憾的是这个目标并未完全实现。为了解决软件危机,有人在20世纪80年代提出了面向对象的程序设计(Object-OrientedProgramming,OPP)思想,这就需要设计出能支持面向对象的程序设计方法的新语言。Smalltalk就是当时问世的一种面向对象的语言。而在实践中,人们发现C语言是如此深入人心,使用如此广泛,以至于感到最好的办法并不是另外发明一种新的语言去代替它,而是在它原有的基础上加以发展。在这种形势下,C++应运而生。C++语言是贝尔实验室研究员比亚恩·斯特劳斯特鲁普(BjarneStroustrup)在1980年开发的,其目的是在C语言的基础上实现面向对象编程的功能。从而实现程序代码更易维护、代码重用性更高、程序结构更清晰且具有C语言的高效性(C++语言的效率大约是C语言的95%左右)。C++是由C发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C++。从它的名字可以知道,C++也曾有过C+(带流的C,称C+—读作Cplus)到C++(带流和带类class的C,称C++—读作Cplusplus)的发展过程。C++既可以用于面向过程的结构化程序设计,也可以用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言,是面向对象程序设计语言的典型代表之一。C++语言提供了比C语言更灵活的代码编写规则,可让编程人员最大限度的自由发挥。面向对象的程序设计已逐步成为主流设计技术。为了增加可用性,C++语言在C语言的基础上新增了一些数据类型,如boolean(逻辑型)、const(常量)等,并且使用了内联函数、引用、重载、继承、虚函数等,实现了面向对象的程序设计功能。程序的错误处理对程序的健壮性至关重要。在C语言中,程序的错误处理是非常困难的,因为它没有提供程序运行期错误捕获机制,而这在C++语言中得到了较好的处理。C++语言提供了运行期错误捕获机制,使得程序自身能够处理发生的一些错误。当前C++语言的主要应用环境为VC++和C++Builder两个开发平台。由于VC++6.0开发平台的广泛推广与使用,C++已成为当今逐步取代C语言的主流开发语言。本教材正是以VC++6.0开发工具为平台,这不但可使读者有较好的上机环境,还可熟悉VC++6.0开发工具的IDE(集成开发环境),为后续的使用MFC(微软基础类库)编写Windows应用程序打好基础。10.2一个简单的C++语言程序我们先来看一个最简单的C程序:voidmain(){},一个最简单的C++程序:voidmain(){},从这两个程序的主函数来看,C++与C程序没什么不同,都是由voidmain()函数开始执行。再来看一个带基本输入输出功能的简单C程序:#includestdio.h/*包含完成I/O操作的头文件*/voidmain(){inti;scanf(%d,&i);/*按格式控制输入数值*/printf(%d\n,i);}/*按格式控制输出变量i的值并换行*/运行结果:5↙5再来看一个带基本输入输出功能的简单C++程序:#includeiostream.h/*包含完成I/O操作的头文件*/voidmain(){inti;cini;//输入数值coutwelcomeiendl;}//输出字符串及变量i的值并换行运行结果:5↙welcome5程序说明♣以上程序虽然简单,但已经体现出了C程序和C++程序的不同了。就前面的两段程序而言,不同点主要表现在以下:1、在C程序中需要包含stdio.h(standardinputoutput标准输入输出)头文件完成基本输入输出;而在C++程序中则要包含iostream.h(inputoutputstream输入输出流)头文件完成基本输入输出。2、在C语言中,输入输出是由位于头文件stdio.h中的库函数完成的;而C++则是由位于iostream.h头文件中的输入输出对象完成的。那么C++中的输入输出对象又是怎么工作的呢?原来,C++重载了“”和“”运算符(“”为输出或插入运算符,“”为提取运算符),与cout和cin(均为C++系统预定义的对象)一同用于完成基本输出输入操作。cout(console+out)是一个用于向标准设备(显示器)进行输出的输出流对象;cin(console+in)是一个用于获取键盘输入的输入流对象。“”运算符的作用是将一个输出对象输出到cout对象中,即cout和“”运算符共同完成一次输出;“”运算符则是将一个输入对象提取到cin对象中,然后送到内存,即cin和“”运算符共同完成一次从键盘的提取输入。在C语言中,“”与“”曾被用于位运算的“左移”、“右移”运算符。C++中又把它们作为输出输入运算符。这样在一个编译器中允许一个运算符用于不同的场合,语法又能识别出不同含义的用法称作运算符的“重载”(overloading)。即重新赋予并解释它们新的含义。其实就是“一物多用”。3、换行处理不同。C语言使用'\n'转义字符控制换行,C++语言使用endl(endline)换行。4、程序源文件的扩展名不相同。C使用.c作为源文件扩展名;C++使用.cpp(Cplusplus)作为扩展名。5、注释方法不完全相同。C++的注释允许采取两种形式。一种是C使用的“/*”和“*/”,它们之间的字符都是注释内容,又称段注释;另一种则是“//”。“//”至本行结尾都作为注释部分,不能跨行,又称行注释。注释是对程序功能的说明,方便阅读和维护。写程序应养成加注释的良好习惯。尤其是一些全局变量、函数功能、复杂语句都应加入相应注释,以便于日后的维护。否则,过了一段时间,你可能会发现连自己都看不懂程序到底干了什么。6、C++简化了基本输入与输出的操作,使编程人员不必再去重复C中繁琐的输入输出格式,C++提供的cin和cout对象可以自动识别所输入和输出的数据类型及格式。由以上的几个例子可以看出,C++程序同C程序在语法使用上基本是相同的,C++延续了C的变量定义方式、变量初始化、流程控制等。由此也可以看出,C同C++的密切关系。♣voidmain()函数,main()为主函数名,void表示函数无返回值。函数体用一对花括号“{}”封装,函数体由语句组成,每条语句用“;”分号作为结束符。不是所有C或C++程序都使用main()函数作为启动函数。在Windows程序设计方式下,C或C++程序的入口函数为WinMain(),而不是传统的main()函数。本部分介绍的均是控制台下的C++程序。因此,程序入口仍然是main()函数。10.2.1VC++6.0上创建一个C++程序的步骤一、启动VC++6.0,进入其工作环境,显示出主界面,关闭“Doyouknow”对话框。二、选择“文件【File】”菜单下的“新建【New】”命令。弹出“New”对话框。并选工程“Projects”选项卡。三、在列表中选择Win32ConsoleApplication项,给工程起个名称如MyProc01,并设置存放路径,点击“OK”确定后弹出如图10.2-1图示界面:图10.2-1四、选择“一个空工程”,点击“完成”按钮,在接下来弹出的信息窗口中点击“确定”按钮。五、再次点击“文件【File】”菜单下的“新建【New】”命令项,在弹出的New对话框中,选择“文件(Files)”选项卡,并选择C++SourceFile,指定源文件名Test01并设置文件的存放路径,点击“OK”确定。如图10.2-2所示界面。六、在打开的代码编辑窗口里输入代码。七、点击编译按钮【Build】(或按F7)进行编译。如果没有错误,再点击运行按钮【ExecuteProgram】(或按Ctrl+F5)并运行查看结果,如图10.2-3所示界面。图10.2-2图10.2-3输入代码调试并运行注意♣最好先在磁盘上新建一个文件夹,如:D:\MyC++,然后将使用的工程和过程文件都保存到这个文件夹中,这样便于以后的管理和使用。♣每个C++程序均被VC++6.0开发环境看作一个“工程(Project)”,VC++6.0开发环境会为每个工程产生一些相关文件。因此,编译之后,在程序目录下不但会自动保存.cpp源程序代码文件,还会保存一些其它的过程文件。♣VC++6.0开发环境会为每个“工程”提供一个“工作空间(Workspace)”,用于管理各种文件,代码编写及调试过程中的文件都位于这个“工作空间”中。每次VC++6.0开发环境只允许打开一个工程的“工作空间”。♣要打开不同的“工作空间”,或建立新的工程,需要先关闭当前的“工作空间”(【File】→【CloseWorkspace】)。♣点击运行按钮【ExecuteProgram】(或按Ctrl+F5)后,执行过程和结果在MS-DOS字符窗口中进行并显示。程序执行结束后,自动停在程序的结尾处并提示“Pressanykeytocontinue”,按下任意键后,回到VC++6.0IDE中。10.3C++对C的扩充C++语言发展了类(Class)的理论。类是进行面向对象程序设计的基础。除了引进类的概念以外,C++对C的许多方面还作了扩充。C++向下兼容,全面支持C语言。在C语言中可以用的语法,在C++中几乎都可以用;用C编写的程序,在C++编译器中基本上都能通过。如前面各章中例举的例题,都属于这种情况。本节介绍除了类以外,C++在其它方面对C的扩充和更新。1、在程序结构上,C程序是面向过程结构化的程序设计方法,而结构化程序设计的缺点很突出,其一数据与处理数据的函数相分离,导致对函数的分析变得困难;其二代码可重用性差。任何一个软件生产者,都希望设计的程序代码具有可重用性,使代码具有可移植性和相对独立性,从而形成一些具有特定功能的组件。这些组件经过使用被证明性能稳定、功能可靠后,下次开发新的应用程序时,这些组件可被重新使用,从而减轻程序开发人员的工作强度,缩短开发周期。C++中使用类、对象、封装、继承以及多态等即可做到。C++面向对象程序设计语言的特点有以下几个方面:数据描述抽象性:通过从特定的普遍实例中提取共同的特性去定义一个一般化的概念的过程。如可将“人”的共性(姓名、性别、年龄、职业、籍贯、身高等属性)提取出来,定一个类:人类。那么,只要一提到“人类”,就自然会想到与之相关的特征。数据封装隐蔽性:也叫数据隐藏。用户无需知道对象内部是怎样工作的,只需知道对象所提供的接口和可使用的方法即可。在C++中一般用类来实现对数据的封装,然后通过该类的实例对象,向用户提供相应功能。继承性:一种代码重用的思想。由现有的类型(基类或父类)派生出新的子类,新的子类不但具有了其父类的属性和方法,还可扩展出子类特有的属性或方法。这样,子类不但可以完成一些父类的功能,还可增加新的功能。这就好像产品的更新换代一样,新产品总是提供了更多更好的功能,但不论怎样新产品还是延续了上一代产品的某些特性。多态性:指在基类中定义的属性或方法,被子类继承之后,在子类中可以具有不同的数据类型或表现出不同的行为。使用动态联编:动态联编是多态性的一种实现方式,是程序自身根据当前的运行状态和需求进行定位的过程。按照联编所处的阶段不同,可分为:静态联编和动态联编。2、C++新增了内联函数、引用、重载、继承、虚函数等,实现了面向对象的程序设计功能。C++既支持传统的结构化程序设计,又支持面向对象的程序设计,而C
本文标题:第10章C语言
链接地址:https://www.777doc.com/doc-2191095 .html