课程设安排.ppt

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

4.10 面向对象程序的组织与Windows下的实现 面向过程的程序结构: 程序=算法+数据结构。 算法实际上就是功能抽象。在面向过程的程序设计中程序是模块化的,模块是分层次的,层与层之间是一个从上往下的调用关系。图4.11给出了这种层次模块的调用关系。 图4.11 面向过程程序设计的程序组织 4.10 面向对象程序的组织与Windows下的实现 功能抽象是困难的,而且很难全面,一旦要解决的问题发生一点小变化,功能块就要重编,而一个功能块又被多个上层模块调用(图中称任务块),它们的要求有的变了,有的没变,这就给重编带来极大的困难。 4.10 面向对象程序的组织与Windows下的实现 面向对象的程序构造: 对象=(算法+数据结构), 程序=对象+对象+……+对象+消息。 这里程序是由一个个封装的对象组成,而对象是由紧密结合在一起的算法和数据结构组成,对象中有数据和对数据的操作,它带来了计算机效率的下降和程序员效率的上升及工作难度的下降。 4.5 运算符的重载 默认的复数复制赋值操作符: 函数声明: Complex Complex::operator = (const Complex c){ Real=c.Real; Image=c.Image; return *this; } 默认的赋值操作返回对象本身的引用,它可以进行连续赋值。 Complex a,b,c; a=b; c=a=b; 4.5 运算符的重载 本例中重载的赋值运算符“=”取代了默认的赋值操作,返回一个复数临时变量,尽管该复数生命期仅在使用赋值号的表达式(如a=b=c)中,却也能进行连续赋值。但它的执行效率和代码简洁性较差。 课本的例子: Complex Complex::operator=(Complex c){//重载= Complex temp; //定义temp为可返回Complex类型值,使=可连续使用 temp.Real=c.Real; temp.Image=c.Image; Real=temp.Real; Image=temp.Image; return temp; } 4.5 运算符的重载  2.??当用类的成员函数实现运算符的重载时,运算符重载函数的参数(当为双目运算符时)为一个或(当为单目运算符时)没有。运算符的左操作数一定是对象,因为重载的运算符是该对象的成员函数,而右操作数是该函数的参数。(隐含的*this) 3.??单目运算符“++”和“--”存在前置与后置问题。 前置“++”格式为: 返回类型 类名::operator++(){……} 而后置“++”格式为: 返回类型 类名::operator++(int){……} 后置“++”中的参数int仅用作区分。 小结:  1. 运算符重载函数的函数名必须为关键字Operator加一个合法的运算符。在调用该函数时,将右操作数作为函数的实参。 4.5 运算符的重载 4. 优先级和结合性是固定的 x==y+z; x.operator==(y.operator+(z)) 4.5 运算符的重载 运算符 运算符名称 禁止重载的理由 ? : 三目条件运算符 C++中没有定义三目运算符的语法 .和.* 成员与成员指针操作符 为保证成员操作符对成员访问的安全性 :: 作用域操作符 该操作符右操作数不是表达式 sizeof 类型字长操作符 该操作符的操作数为类型名,不是表达式 表5.1 C++中不允许重载的运算符 5. C++中只有极少数的运算符不允许重载。 4.5 运算符的重载 问题:double d=05; Complex c; 例5.7中: c=c+d; 语句,改为 c=d+c; 因为d不是Complex的对象,C++编译器将无法找到合适的重载的“+”运算符对应的函数,最终给出出错信息。 怎样解决? 4.6 友元 在C++中友元(friend)函数允许在类外访问该类中的任何成员,就象成员函数一样。友元函数用关键字friend说明。 上节答案: 用友元函数重载运算符“+”,可以实现 c=d+c; 4.6 友元 class Complex {…… friend Complex operator + (double,Complex); }; //opration+说明为类Complex类的友元函数, //friend只用于类说明中,定义时不加friend Complex operator + (double d , Complex c){ return Complex(d+c.Real , c.Image) ; } //注意友元不是成员函数,但以直接访问私有成员 int m

文档评论(0)

181****9125 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档