- 1、本文档共62页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
不同类型数据间的转换 归纳起来,使用转换构造函数将一个指定的数据类型转换为类的方法如下: 先声明一个类,如Complex 在这个类中定义一个只有一个参数的构造函数,参数的类型是需要转换的类型,在函数体中指定转换的方法。 在该类的作用域内可以用以下形式进行类型转换: 类名(指定类型的数据) * 不同类型数据间的转换 不仅可以将一个标准类型数据转换成类对象,也可以将另一个类的对象转换成转换构造函数所在的类对象。 如,可以将一个学生类对象转换成一个老师类对象。Teacher(Student s) {num=s.num; strcpy(name, s.name); sex= s.sex;},但应注意s中的num,name,sex必须都是共有成员,否则无法在类外引用。 * 不同类型数据间的转换 转型操作符:将一个类的对象转换成另一类型的数据。 如已经声明了Complex类,则可定义 operator double() {return real;} 将一个Complex对象转换成一个double型数据。 函数没有参数(操作数就是调用者对象) 没有返回类型(返回类型就是函数名) * 不同类型数据间的转换 转型操作符重载函数只能作为成员函数,因为其转换的主体是本类的对象。 虽然都是用Operator开头,这里被重载的实际上是类型名,而不是操作符。 * 不同类型数据间的转换 转换构造函数和转型操作符有一个共同的功能,当需要的时候,编译系统会自动调用这些函数,建立一个无名的临时变量(或对象) * 不同类型数据间的转换 使用转型操作符,还是定义转换构造函数并重载运算符呢? 假如程序需要对一个Complex类对象和一个double型变量进行+,-,*,\等算数运算,以及关系运算和逻辑运算,如果不用转型操作符,就要对多种操作符进行重载,以便能进行各种运算。非常麻烦。而提供转型操作符函数就可以将Complex转换为double,从而利用标准类型的数据进行运算。 * * 函数调用操作符重载 可以将函数操作符( )看成是下标操作符[ ]的扩展,函数调用操作符可以带有零个或多个参数。 与下标操作符一样,函数调用操作符( ) 必须要以成员函数的形式重载。其声明语法如下: * 函数调用操作符重载 如果c是一个类C对象,x是一个float类型变量,name是一个string类型变量,则表达式 会被翻译为 请注意:函数调用操作符重载函数 和 普通函数的区别 (1)普通函数,函数名固定 (2)函数调用操作符重载函数,函数名是类对象,变化的。 * 函数调用操作符重载 * 函数调用操作符重载 Int intTwoArray::operator()(int i, int j) { if (i 0) || (i size1) cout “FirstOutofBounds”; if (j 0) || (j size2) cout “SecondOutofBounds”; return a[i * size2 + j ]; } * 函数调用操作符重载 const Int intTwoArray::operator()(int i, int j) const { if (i 0) || (i size1) cout “FirstOutofBounds”; if (j 0) || (j size2) cout “SecondOutofBounds”; return a[i * size2 + j ]; } * 函数调用操作符重载 intTwoArray:: intTwoArray (int s1, int s2) { int size = s1 * s2; a = new int [size]; size1 = s1; size2 = s2; } * 函数调用操作符重载:测试程序 * 函数调用操作符重载:测试程序输出 * 内存管理操作符重载 内存管理操作符 new、 new[] delete delete[] 既可以用成员函数也可以用顶层函数重载。 * 内存管理操作符重载 当应用程序需要控制自己的内存管理时,需要对内存管理操作符进行重载 比如,嵌入式系统(例如,控制冰箱和汽车引擎的微处理系统)的内存资源十分有限,经常需要直接管理内存。 在某些环境下(如Microsoft Windows),系统提供了某些特殊的内存管理机制,如果应用程序要使用这些机制,也需要直接管理内存 * 内存管理操作符重载 new操作符的重载方式有两种: 和 两种重载方式均返回void*类型。本例中,两种重载方式
您可能关注的文档
- 《2012我们接力辉煌征程》-课件设计(公开).ppt
- 《2013-2014学年高二语文同步课件5-5恶乎往而不可(新人》-课件设计(公开).ppt
- 《2013-2014学年高中语文人教版必修2导学课件第2单元第》-课件设计(公开).ppt
- 《2013-2014学年高中语文人教版必修5导学课件第1课林教》-课件设计(公开).ppt
- 《2013高考字形复习专题》-课件设计(公开).ppt
- 《2013届高考语文一轮复习课件06《标点复习指导》费》-课件设计(公开).ppt
- 《2013届高考政治人教版二轮复习课件专题5公民的政治生活》-课件设计(公开).ppt
- 《2013届高三生物实验专项突破29设计并制作生态缸》-课件设计(公开).ppt
- 《2013届中考英语夺分随堂自主复习学案》-课件设计(公开).ppt
- 《2013年八昙队镂纳喜第五单元25《杜甫诗三首》石壕》-课件设计(公开).ppt
文档评论(0)