C 面向对象程序设计第02章.ppt

  1. 1、本文档共104页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C 面向对象程序设计第02章

《面向对象程序设计与Visual C++6.0教程》 《面向对象程序设计与Visual C++6.0教程》 C++面向对象技术程序设计 主讲教师:吴芸 1)C++保持与C兼容; 2)保持了C简洁、高效和接近汇编语言的特点;但比C更安全,可读性更好,代码结构更合理 3)使得软件的可重用性、可扩充性、可维护性和可靠性等方面有所提高; 4)支持面向对象机制: 块作用域 ●标识符在一个函数的语句块内定义时,则它具有块作用域。 ●块作用域是从块内的定义处开始,直到该块结束(即所在复合语句的右花括号)为止 让我们假设下面的情形可能就出现在你的程序中: 【1】const和define的区别: 1)在C中,习惯使用#define来定义常量,例如:#define LIMIT 100 3)const的作用与#define相似,但它消除了#define的不安全性 带有缺省参数的函数 带有缺省参数的函数 例【2.13】全局变量与局部变量同名: 例【2.14】作用域运算符的使用: 引用是给某一个常量、变量、数组或对象起了一个别名。对引用的任何操作,都是对被引用的目标的操作。 类型 引用名=被引用的目标的名字; 1)类型指的是被引用的目标的类型; 2)引用必须在声明时就初始化,没有初始化的引用是毫无意义的; 3)引用就是被引用的目标的别名,引用不占据内存,和被引用的目标共同占有。 2.3.9 函数的重载 定义:两个或两个以上的函数共用一个函数名时,称为函数的重载。 条件:只要函数参数的类型不同,或者参数的个数不同,或兼而有之,两个或两个以上的函数就可以使用相同的函数名。 目的:使功能类似的函数使用相同的名字,令程序员很快可以掌握这些函数的用法。 2.3.9 函数的重载 【2.3.9.1】 用例1: 参数类型不同的函数重载。 2.3.9 函数的重载 【2.3.9.1】 用例2: 参数个数不同的函数重载。 2.3.9 函数的重载 1)调用重载函数时,函数返回值不在参数匹配检查之列。 因此,若两个函数的参数个数和类型都相同,而只有返回值不同,则不允许重载。 【2.3.9.1】 说明 int mul (int x, int y); double mul (int x, int y); ? 2.3.9 函数的重载 2)函数重载与带默认值一起使用时,有可能引起二义性。 当执行以下的函数时: 编译系统无法确认调用哪一个函数。 【2.3.9.1】 说明 void DrawCircle (int r=0, int x=0, int y=0); void DrawCircle (int r); ? DrawCircle (20); 2.3.9 函数的重载 3)在函数调用时,如果给出的实参与形参类型不相符,C++的编译器会自动地做类型转换工作。 如转换成功,则程序继续执行,但有可能产生不可识别的错语。 当执行以下的函数时: 这是因为编译器无法确定将5.56转换成int还是long类型。 【2.3.9.1】 说明 void f_a (int x); void f_a (long x); ? f_a (5.56); #include iostream.h void mul ( int x, int y){ coutx*y“2 parameters”endl; } void mul ( int x, int y, int z){ coutx*y*z“3 prarameters”endl; } void mul ( int x, int y=3, int z=4); void main ( ){ mul (2, 3 ); mul (2, 3, 4); } 因为在全局作用域中有缺省参数函数的声明,所以导致mul(2,3)的调用产生了二义性 mul (2,3 ) 2.3.9 函数的重载 【2.3.9.2】 重载函数和默认参数的关系 程序的运行结果是什么?   程序没有运行结果,因为编译不能通过 #include iostream.h void abs(int); void main( ){ void abs(float); abs(5); } void abs(int i){ cout(i0?i:-i) abs(int)endl; } void abs(float f){ cout(f0?f:-f) abs(float)endl; } 5 abs(float) 程序的运行结果? 2.3.9 函数的重载 【2.3.9.2】 重载函数和函数说明作用域的关系 2.3.09) 函数的重载 2.3.10) 作用域运算符“::” 2.3

您可能关注的文档

文档评论(0)

ipbohn97 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档