C++程序设计基础第22讲-Read.ppt

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

C++程序设计基础第22讲 C++程序设计基础 第22讲 授课教师:徐鲁辉 授课日期:2007-12-07 【上节回顾】 重载运算符的限制和语法形式; 用友元函数和成员函数重载运算符及其使用时机; 几个典型的运算符重载:++、--、=、[]、()、、。 第6章 运算符重载 6.1 运算符重载规则 6.2 用成员或友元函数重载运算符 6.3 几个典型运算符的重载 6.4 类类型转换 6.4 类类型转换 数据类型转换在程序编译时或在程序运行实现 基本类型 ←→ 基本类型 基本类型 ←→ 类类型 类类型 ←→ 类类型 类对象的类型转换可由两种方式说明: 方法一:构造函数 方法二:类型转换函数 有隐式调用和显式调用方式 6.4.1 构造函数进行类类型转换 当类 ClassX 具有以下形式的构造函数: ClassX :: ClassX ( arg ,arg1 = E1 ,…, argn = En ) ; 说明了一种从参数 arg 的类型到该类类型的转换 【课堂示例(一)】 class X { // …… public : X ( int ) ; X ( const char * , int = 0 ) ; }; void f ( X arg ) ; … X a = X( 1 ) ; // a = 1 X b = Jessie ; // b = X ( Jessie , 0 ) a = 2 ; // a = X ( 2 ) f ( 3 ) ; // f ( X ( 3 ) ) f ( 10 , 20 ) ; // error 6.4.2 类型转换函数 带参数的构造函数不能把一个类类型转换成基本类型; 类类型转换函数是一种特殊的成员函数,提供类对象之间显式类型转换的机制。 6.4.2 类型转换函数 语法形式: X :: operator T ( ) { …… return T 类型的对象 } 功能: 将类型 X 的对象转换为类型 T 的对象,T 可以是预定义类型,也可以是用户定义类型 说明: 函数没有参数,没有返回类型,但必须有一条 return 语句,返回T 类型的对象; 该函数只能为成员函数,不能为友员。 【课堂示例(二)】 class X { …… public : operator int ( ) ; …… } ; void f ( X a ) { int i = int ( a ) ; i = ( int ) a ; i = a ; } 6.4.2 类型转换函数 类型转换函数有两种使用方式: 隐式使用i = a ; 显式使用i = a . operator int ( )// int ( a ),( int ) a 使用不同函数作类型转换函数: int i = a ; // 用类型转换函数进行转换 X i = a ; // 用构造函数进行转换 6.4.2 类型转换函数 除了赋值和初始化,类型转换函数还可以这样使用: void g ( X a , X b ) { int i = ( a ) ? 1 + a : 0 ; int j = ( a b ) ? a + b : i ; if ( a ) { …… } ; } 对象 a 、b 可用在整型变量出现的地方 【课堂示例(三)】 例6-8 有理数计算。 【分析】 有理数类Rational 数据成员: (1)分子Numerator (2)分母Denominator 成员函数: (1)构造函数有一个非默认参数,可以把一个整型转换为Rational对象 (2)类型转换函数可以把Rational类对象转换为double类型数据 友元函数: (1)重载运算符+,用于求两个有理数的和 (2)重载运算符,用于输出一个有理数 【本章小结】 重载运算符的限制和语法形式; 调用重载运算符函数的方式:简洁方式、完整方式。 运算符函数既可以重载为成员函数,也可以重载为友员函数或普通函数,注意重载为成员或友元的时机;(重点) 构造函数和类型转换函数可以实现基本类型与类类型,以及类类型之间的类型转换。 【习题讲解(一)】 P260:6.2(1) class T { public: T(){a=0; b=0; c=0;} T(int i, int j, int k){a=i; b=j; c=k;} void get(int i, int j, int k) {i=a; j=b; k=c;} T operator*(T obj); private: int a,b,c; }; T T::operator *(T obj) { T tempobj; tempobj.a =

文档评论(0)

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

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

1亿VIP精品文档

相关文档