第1、2章--C和VC++语言概述.ppt_第1页
第1、2章--C和VC++语言概述.ppt_第2页
第1、2章--C和VC++语言概述.ppt_第3页
第1、2章--C和VC++语言概述.ppt_第4页
第1、2章--C和VC++语言概述.ppt_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VC+面向对象程序设计,E-mail:heyu642695),学习目标与要求开设本课程的目的是使学生掌握使用面向对象程序设计语言(VC+)进行应用程序设计的基本方法和技能,注重培养学生编程能力、分析问题和解决问题的能力。本课程的任务是使学生在复习C/C+语言基本内容的基础上,进一步掌握VC+面向对象程序设计的基本概念、原理和方法,特别是:类和对象、继承与派生、多态性与虚函数、运算符重载等内容必须完全掌握。同时,全面了解和掌握在可视化环境中VC+的编程方法和技巧。,学习方法,本课程的讲授是按章顺序进行,课前请做好预习,上课认真听讲,积极思考。仔细阅读教材中的大量例题,从而体会并最终掌握其中的编程方法和技巧。认真、独立、按时完成并提交作业。加强交流,多讨论,多阅读参考书、多请教,多提问,及时答疑解惑。重视上机实践,有效利用宝贵的上机时间。只有通过上机才能加深对概念的理解和认识,才能掌握编程方法和技巧。,教材:VC+面向对象程序设计教程与实验(第二版)温秀梅等清华大学出版社,2009.4参考教材:面向对象程序设计教程冷英男李文超电子工业出版社,2007.6C+面向对象程序设计教程陈维兴/陈昕/林小茶清华大学出版社,2009.6面向对象程序设计教程(Java版)C.ThomasWu机械工业出版社,2007VisualC#.NET面向对象程序设计教程赵卫伟机械工业出版社,2011.8,教学环节:(总学时:60学时)课堂教学:30学时上机实验:30学时,要求完成实验大纲中的7个实验自学:第九、十、十一、十二章作业:每章中间、结束后布置作业实验:每个实验后交实验报告(写在实验报告纸上)考核成绩:平时:10%,上机实验:20,期末考:70%(注:期末考试采用闭卷形式),内容安排,第1章绪论2学时,第2章C+对C语言的扩充44学时,第3章类和对象44学时,第4章友元44学时,第5章继承与派生66学时,第6章多态性和虚函数46学时,第7章输入输出流库44学时,第8章异常处理22学时,第9章MFC编程基础,第10章对话框和控制,第11章菜单和文档/视图结构,第12章图形设备接口,第一章C/VC+语言概述,数理信息学院2009.8,面向对象技术概述程序书写规范数据类型运算符和表达式基本语句函数指针和引用作用域和存储类型,本章主要内容,本章要点:掌握C+/VC+与C语言不同之处。掌握new、delete、引用、内联函数和函数重载的意义和作用。掌握C+/VC+程序的基本结构。,面向对象方法的起源,进入80年代,由于一系列高新技术的研究,使得软件设计人员的负担越来越重,软件的实现越来越庞大,传统的结构化程序设计思想已无法满足这一要求,为此,人们就开始寻求一种更能反映人类解决问题的自然方法,这就是“面向对象”技术。自80年代以来,出现了多种面向对象程序设计语言(简称为OOPL:ObjectOrientedProgrammingLanguage),如Ada,Smalltalk,C+和当前使用在Internet上的平台无关语言Java等。,由于OOPL的对象、类具有高度的抽象性,所以它能很好地表达任何复杂的数据类型,也允许程序员灵活地定义自己所需要的数据类型。类本身具有很完整的封装性,可以使用它作为编程中的模块单元,满足模块独立自治的需求。再加上继承性和多态性,更有助于简化大型软件和大量重复定义的模块,增强了模块的可重用性,提高了软件的可靠性,缩短了软件的开发周期。,面向对象的认识观,天堂(客观世界),将客观世界中的事务抽象为对象,面向对象方法的本质,面向对象方法的本质,就是强调从客观世界中固有的事物出发来构造系统,用人类在现实生活中常用的思维方式来认识、理解和描述客观事物,突出最终建立的系统使之能够映射问题域。,面向对象技术的基本概念,面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。面向对象程序设计从所处理的数据入手,以数据为中心而不是以功能为中心来描述系统,因为数据相对于功能而言具有更强的稳定性。,面向对象程序的主要结构特点,第一,程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律;第二,程序中的一切操作都是通过向对象发送消息来实现的,对象接到消息后,启动有关函数完成相应的操作。,面向对象的基本概念,对象(object),客观世界中的实体或者概念,可以将对象理解为事物。,类(class),具有相似特点的一组对象(群体)。对象由类统一描述。,面向对象(object-oriented),研究对象的属性和行为、对象间的关系以及对象间的活动。面向对象程序由类定义和对象的使用构成。,对象的概念(一),面向对象技术认为客观世界是由各种各样的对象组成,每种对象都有各自的内部状态和运动规律,不同对象间的相互作用和联系就构成了各种不同的系统,构成了客观世界。对象是组成一个系统的基本逻辑单元,是一个有组织形式的含有信息的实体。对象既可以表示一个抽象的概念,也可以表示一个具体的模块,既可以表示软件,也可以表示硬件。,对象的概念(二),对象(Object)由属性(Attribute)和行为(Action)两部分组成。属性是用来描述对象静态特征的一个数据项。行为是用来描述对象动态特征和行为的一个操作。对象是包含客观世界物体特征的抽象实体,是属性和行为的封装体。,例:建立一个复数对象模型,类的确定(一),类(Class)是一个抽象的概念,用来描述具有相同属性和行为的一组对象的集合;类为属于它的全部对象提供了统一的抽象描述;类的内部包括属性和行为两个主要部分;类是对象集合的再抽象。划分原则:寻求一个大系统中事物的共性,将具有共性的系统成分确定为一个类。,类的确定(二),确定某事物是一个类的步骤包括:第一步,要判断该事物是否有一个以上的实例,如果有,则它是一个类;第二步,要判断类的实例中有没有绝对的不同点,如果没有,则它是一个类。因为类的每一个实例是相似的,具有相同属性和行为类别结构。不能把一组函数组合在一起构成类!,面向对象vs面向过程,消息和事件,事件(Event):用户或系统中发生的任何活动。消息(Message):是描述事件发生的信息。消息是对象之间发出的行为请求。多个消息构成一个事件。,注:封装使对象成为一个相对独立的实体,其内部状态不因外界的干扰而改变,也不会涉及到其他对象;而消息机制为它们提供了一个相互间动态联系的途径,通过消息机制,把对象之间动态连接在一起,使它们的行为能互相配合,构成一个有机的运行系统。,面向对象技术的基本特征,抽象性抽象就是忽略事物中与当前目标无关的非本质特征,更充分地注意与当前目标有关的本质特征。封装性封装就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。继承性继承是一种联结类与类的层次模型。继承性是指特殊类的对象拥有其一般类的全部属性和行为的特性。多态性多态是指类中同一函数名对应多个具有相似功能的不同函数。多态性是指可以使用相同的调用方式来调用这些具有不同功能的同名函数的特性。,结构化程序设计(面向过程的语言)设计思路:自顶向下、逐步求精程序结构:由模块形成的树形结构(强调的是功能抽象和模块化)基本组成结构:顺序、选择、循环程序=数据结构+算法+程序设计语言+语言环境,程序设计方法的发展,面向对象的方法设计思路:对客观事物的抽象程序特点:对类(对象的存在形式)进行结构化程序设计(强调的是功能抽象和数据抽象)类提供简单的对外接口C+:在C语言基础上扩充的,C语言的超集支持OOP的最主要代表语言,程序=对象+对象+对象对象=算法+数据结构+程序设计语言+语言环境,面向对象程序设计优于传统的结构化程序设计,其优越性表现在,它有希望解决软件工程的两个主要的问题软件复杂性控制和软件生产率的提高,此外它还符合人类的思维习惯,能够自然地表现现实世界的实体和问题。,20世纪60年代,Simula语言就具有了类和对象的概念。70年代初,美国XeroxPaloAlto研究中心推出了Smalltalk,它完整地体现并进一步丰富了面向对象的概念。混合型面向对象程序设计语言,如C+,这类语言一般是在传统的过程化语言中加入了各种面向对象的语言机制,它所强调的是运行效率。纯面向对象程序设计语言,如Java语言。,面向对象程序设计语言,Visualc+的发展,1989年TurboCBorland,1991年TurboC+1.01Borland,1992年BorlandC/C+3.0Borland,1995年VisualC+1.0Microsoft,1998年VisualC+6.0Microsoft,2001年VisualC#.netMicrosoft,一个简单的C+程序,/C+程序的基本结构#includevoidmain()doubler,area;/声明变量coutr;/从键盘上输入变量r的值area=3.14159*r*r;/计算面积cout“圆的面积为:”arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=arear;girth=2*pi*r;area=pi*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=area、”是提取符,用来将用户键入的内容保存到后面的变量r中。“/”和“/*/”一样都是注释符,只是“/”仅作单行注释。,分析,“圆”是抽象的类类型,建立具体的圆(对象),半径?,圆的周长?面积?,实例化,例1-2用面向对象方法编程,求圆的周长和面积,例1-2用面向对象方法编程,求圆的周长和面积,分析,圆类数据成员半径成员函数置半径值求圆的半径求周长求面积,实例化,1.1概述,例1-2用面向对象方法编程,求圆的周长和面积,#includeclassCircledoubleradius;public:voidSet_Radius(doubler)radius=r;doubleGet_Radius()returnradius;doubleGet_Girth()return2*3.14f*radius;doubleGet_Area()return3.14f*radius*radius;voidmain()CircleA,B;A.Set_Radius(6.23);coutA.Radius=A.Get_Radius()endl;coutA.Girth=A.Get_Girth()endl;coutA.Area=A.Get_Area()endl;B.Set_Radius(10.5);coutB.radius=B.Get_Radius()endl;coutB.Girth=B.Get_Girth()endl;coutB.Area=B.Get_Area()endl;,例1-2用面向对象方法编程,求圆的周长和面积,#includeclassCircledoubleradius;public:voidSet_Radius(doubler)radius=r;doubleGet_Radius()returnradius;doubleGet_Girth()return2*3.14*radius;doubleGet_Area()return3.14*radius*radius;voidmain()CircleA,B;A.Set_Radius(6.23);coutA.Radius=A.Get_Radius()endl;coutA.Girth=A.Get_Girth()endl;coutA.Area=A.Get_Area()endl;B.Set_Radius(10.5);coutB.radius=B.Get_Radius()endl;coutB.Girth=B.Get_Girth()endl;coutB.Area=B.Get_Area()endl;,Circle类定义,例1-2用面向对象方法编程,求圆的周长和面积,#includeclassCircledoubleradius;public:voidSet_Radius(doubler)radius=r;doubleGet_Radius()returnradius;doubleGet_Girth()return2*3.14*radius;doubleGet_Area()return3.14*radius*radius;voidmain()CircleA,B;A.Set_Radius(6.23);coutA.Radius=A.Get_Radius()endl;coutA.Girth=A.Get_Girth()endl;coutA.Area=A.Get_Area()endl;B.Set_Radius(10.5);coutB.radius=B.Get_Radius()endl;coutB.Girth=B.Get_Girth()endl;coutB.Area=B.Get_Area()endl;,数据成员,例1-2用面向对象方法编程,求圆的周长和面积,#includeclassCircledoubleradius;public:voidSet_Radius(doubler)radius=r;doubleGet_Radius()returnradius;doubleGet_Girth()return2*3.14*radius;doubleGet_Area()return3.14*radius*radius;voidmain()CircleA,B;A.Set_Radius(6.23);coutA.Radius=A.Get_Radius()endl;coutA.Girth=A.Get_Girth()endl;coutA.Area=A.Get_Area()endl;B.Set_Radius(10.5);coutB.radius=B.Get_Radius()endl;coutB.Girth=B.Get_Girth()endl;coutB.Area=B.Get_Area()endl;,成员函数,例1-2用面向对象方法编程,求圆的周长和面积,#includeclassCircledoubleradius;public:voidSet_Radius(doubler)radius=r;doubleGet_Radius()returnradius;doubleGet_Girth()return2*3.14*radius;doubleGet_Area()return3.14*radius*radius;voidmain()CircleA,B;A.Set_Radius(6.23);coutA.Radius=A.Get_Radius()endl;coutA.Girth=A.Get_Girth()endl;coutA.Area=A.Get_Area()endl;B.Set_Radius(10.5);coutB.radius=B.Get_Radius()endl;coutB.Girth=B.Get_Girth()endl;coutB.Area=B.Get_Area()endl;,建立对象(类类型变量),例1-2用面向对象方法编程,求圆的周长和面积,#includeclassCircledoubleradius;public:voidSet_Radius(doubler)radius=r;doubleGet_Radius()returnradius;doubleGet_Girth()return2*3.14*radius;doubleGet_Area()return3.14*radius*radius;voidmain()CircleA,B;A.Set_Radius(6.23);coutA.Radius=A.Get_Radius()endl;coutA.Girth=A.Get_Girth()endl;coutA.Area=A.Get_Area()endl;B.Set_Radius(10.5);coutB.radius=B.Get_Radius()endl;coutB.Girth=B.Get_Girth()endl;coutB.Area=B.Get_Area();/cin为标准输入流对象(默认从键盘输入)对应的头文件为:#include,C+语言的输入输出,【例2.1】C+的输入输出举例。#include/使用名空间std,则必须去掉.h扩展名usingnamespacestd;voidmain()charname10;intage;coutname;coutage;coutnameisnameendl;coutageisageendl;,数据类型,C+具有独特的基本数据类型:布尔型(bool),其值为true或false。由于在计算机内,编译系统将true表示成整数1,false表示成整数0,因此也可把布尔型看成是整型。例:boolflag;,常量,在C+中,除了用C语言的#define定义符号常量外,还常常用const来定义符号常量。格式为:const=;例:constintPRICE=30;,注意:,(1)使用const修饰符定义常量时,必须初始化;(2)常量一旦被定义,在程序中任何地方都不能再更改。(3)如果用const定义的是一个整型常量,int可以省略。(4)与#define定义的常量有所不同,const定义的常量可以有自己的数据类型,这样C+编译程序可以进行更加严格的类型检查,具有良好的编译时的检测性。,(5)函数参数也可以用const说明,用于保证实参在该函数内部不被改动,大多数C+编译器能对具有const参数的函数进行更好的代码优化。例如,通过函数max求出整型数组a100中的最大值,函数原型应该是:intmax(constint*pa);这样做的目的是确保原数组的数据不被破坏,即在函数中对数组元素的操作只许读,不许写。,const与指针一起使用的组合情况:,(1)指向常量的指针指向常量的指针是指一个指向常量的指针变量。constchar*pc=abcd;声明指向常量的指针变量pc,它指向一个字符串常量。由于使用了const,不允许改变指针所指的常量,因此以下语句是错误的:pc3=x;但是由于pc是一个指向常量的普通指针变量,不是常指针,因此可以改变pc的值。例如以下语句是允许的:pc=jkkk;,(2)常指针常指针是指指针本身,而不是它指向的对象声明为常量。例如:char*constpc=abcd;/常指针这个语句的含义为:声明一个名为pc的指针变量,该指针是指向字符型数据的常指针,用“abcd”的地址初始化该常指针。创建一个常指针,就是创建不能移动的固定指针,但是它所指的数据可以改变。例如:pc3=x;/合法pc=dfasdfa;/不合法,(3)指向常量的常指针整个指针本身不能改变,它所指向的值也不能改变。要声明一个指向常量的常指针,二者都要声明为const。例如:constchar*constpc=abcd;/指向常量的常指针这个语句的含义为:声明一个名为pc的指针变量,它是一个指向字符型常量的常指针,用“abcd”的地址初始化该指针。以下两个语句都是错误的:pc3=x;/错误,不能改变指针所指的值pc=dfasdfa;/错误,不能改变指针本身,变量,在C+中,变量的定义比较自由,可以出现在程序的任何位置,如:可以在for语句中定义一个变量。例:#includevoidmain()for(intnum=1;num=100;num+)if(num%7=0)continue;coutnum“;cout“n”;允许直接使用结构体名、联合名、枚举名定义变量。另外,变量的初始化还可以用下面这种形式:例:intk(1),sum(0);表示k和sum是两个整形变量,初值各为:1和0。,使得局部变量的定义点与使用点不至于离得太远,增强程序的可读性,而且也不必在编写某一程序块的开始时就考虑要用到哪些变量。,new和delete运算符,在C语言中,使用malloc和free库函数能有效地、直接地进行动态内存的分配和释放。而在C+中,则使用关键字new和delete来达到同样的效果。动态存储空间的分配用new运算符格式:,=,=new();,=new;,new;,当执行new的时候,有两件事发生:,大小适当的一块存储空间被分配给特定的类型变量。,存储空间的首地址作为new表达式的返回值,分配失败则返回0。,说明:1.对于自身需要多少存储空间未知的数据类型,如对象、数组、链表等应采用动态存储分配;,2.new运算符根据对象的类型,自动决定其大小,而malloc要指定分配存储空间的大小;new返回指向此类型的指针,malloc返回指向void*类型的指针。,举例:,Char*pChar;pChar=newchar;char*string=newchar25;,动态存储空间的释放采用delete运算符格式:,delete,举例:,deletepChar;deletestring;,说明:,必须用于先前new操作分配的有效指针;,对于一个指针只能执行一次delete操作;,delete运算忽略数组的维数或方括符内的数字。,voidmain(),intarraysize,*array;,coutarraysize;,if(array=newintarraysize)=NULL);,cout“pleaseinputanumberforarray:”;,exit(1);,for(intcount=0;countarraysize;count+),arraycount=count*2;,coutarraycount“”;,coutendl;,deletearray;,例:,在函数中如果局部变量与全局变量同名,但又希望使用全局变量,则可采用C+语言提供的作用域运算符(:)。举例:includefloata=2.5;/全局变量voidmain()inta=8;coutaendl;cout:aendl;/:a表示全局作用域中的变量a程序的运行结果为:82.5注意:不能用:访问函数中的局部变量。,作用域运算符(:),功能:给一个定义的变量起一个别名,用于在程序的不同部分使用两个以上的变量名指向同一地址,使得对其中任一个变量的操作实际上都是对同一地址单元进行的。定义格式:,指针的引用特殊数据类型,引用与指针的区别:指针是一个变量,可以把它再赋值成指向别处的地址,而引用不是值,不占存储空间,声明引用时,目标的存储状态不会改变。引用一旦被初始化,就不能再重新赋值(即其地址不会再改变)。说明:定义引用类型变量时,必须将其初始化。而且引用变量类型必须与为它初始化的变量类型相同。当引用类型变量的初始化值是常量时,则必须将该引用定义成const类型。不能引用一个数组,这是因为数组名本身不是一个真正的数据类型。可以引用一个结构体,或对指针变量的引用,例如:int*a;int*。引用本身不是一种数据类型,所以没有引用的引用,也没有引用的指针。,可以用一个引用初始化另一个引用。例如:intnum=50;int/num被修改为100其中ref2也是对num的引用。可以把函数的参数说明成引用以建立函数参数的引用传递方式。有空指针,无空引用引用不能用数据类型来初始化。如:int/函数声明voiddelay(intloops);/函数定义if(loops=0)return;for(intI=0;Iloops;I+);/空循环,起延时作用当调用:delay();时,程序都会自动将loops当作成1000值进行处理(和delay(1000)等效)。当然,也可以重新指定相应的参数值,如:delay(2000);。,说明:当函数既有声明又有定义后,不能在函数定义中指定默认参数。默认参数值可以是全局变量、全局常量、甚至是一个函数,但不可以是局部变量。因为默认参数的函数调用是在编译时确定的,而局部变量的值是在执行时确定。当一个函数中有多个默认参数时,则形参分布中,默认参数必须放置在其它形参的右边(在一个默认参数的右边不能有未指定缺省值的参数)。在函数调用时,系统按从左到右的顺序将实参与形参结合,当实参的数目不足时,系统按同样的顺序用声明或定义中的默认值来补齐所缺少的参数。,/使用默认参数#includedoublepower(doublereal,intn=2);voidmain()doubler=3.0;coutpower(r)endl;coutpower(r,3)endl;doublepower(doublereal,intn)if(n=0)return1.0;doubleresult=real;for(inti=2;i=n;i+)result*=real;returnresult;,/使用默认参数#includedoublepower(doublereal,intn=2);voidmain()doubler=3.0;coutpower(r)endl;coutpower(r,3)endl;doublepower(doublereal,intn)if(n=0)return1.0;doubleresult=real;for(inti=2;i=n;i+)result*=real;returnresult;,定义默认参数,/使用默认参数#includedoublepower(doublereal,intn=2);voidmain()doubler=3.0;coutpower(r)endl;coutpower(r,3)endl;doublepower(doublereal,intn)if(n=0)return1.0;doubleresult=real;for(inti=2;i=n;i+)result*=real;returnresult;,使用默认参数power(r,2),/使用默认参数#includedoublepower(doublereal,intn=2);voidmain()doubler=3.0;coutpower(r)endl;coutpower(r,3)ab;cout“最大的数是:”fmax(a,b)“n”;/调用内联函数,说明:内联函数也要遵循定义在前,调用在后的原则。形参与实参之间的关系与一般函数相同。在C+中,需要定义成的内联函数不能含有循环、switch和复杂嵌套的if语句。递归函数是不能被用来做内联函数的。不能包含goto语句、静态数据、数组。编译器是否将用户定义成内联函数作为真正的内联函数处理,由编译器自行决定。,函数函数的重载,函数重载是C+对C的扩展,它允许多个同名的函数存在,但同名的各个函数的形参必须有区别,如:形参的个数不同;或者形参的个数相同,但参数类型有所不同。若只有返回值的类型不同是不行的。多个同名函数有不同的参数集;编译器根据不同参数的类型和个数产生调用匹配;函数重载用于处理不同数据类型的类似任务;当函数的重载带有默认参数时,应该注意避免二义性。,#includeintabs(inta);doubleabs(doublef);voidmain()coutabs(-5)endl;coutabs(-7.8)endl;intabs(inta)returna0?-a:a;doubleabs(doublef)returnf0?-f:f;,重载示例:,参数个数相同参数类型不同,参数个数不同,#includeintmax(inta,intb);intmax(inta,intb,intc);voidmain()coutb?a:b;intmax(inta,intb,intc)intt;t=max(a,b);returnmax(t,c);,重载示例:,voidferror(intx,inty=0);voidferror(intx);有调用:ferror(3);,错误!,由于具有二义性,编译器无法唯一确定调用函数!,默认参数,重载示例:,voidferror(intx,inty=0);voidferror(intx);有调用:ferror(3);,编译器无法唯一确定调用函数!,intaverage(int,int);doubleaverage(int,int);,仅返回类型不同,函数重定义!,错误!,重载示例:,函数模板(functiontemplate),C+语言中可以使用模板来避免在程序中多次书写相同的代码。所谓模板是一种使用无类型参数来产生一系列函数或类的机制,是C+的一个重要特征。它的实现方法方便了更大规模的软件开发。模板是以一种完全通用的方法来设计函数和类,而不必预

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论