C++课件八
43页1、1,第八章 多态性,清华大学 郑 莉,C+语言程序设计,2,本章主要内容,多态性 运算符重载 虚函数 纯虚函数 抽象类,3,多态性的概念,多态性是面向对象程序设计的重要特征之一。 多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。 多态的实现: 函数重载 运算符重载 虚函数,4,问题举例复数的运算,class complex /复数类声明 public: complex(double r=0.0,double i=0.0) /构造函数 real=r; imag=i; void display(); /显示复数的值 private: double real; double imag; ;,运算符重载,5,问题举例复数的运算,用“+”、“-”能够实现复数的加减运算吗? 实现复数加减运算的方法 重载“+”、“-”运算符,运算符重载,6,运算符重载的实质,运算符重载是对已有的运算符赋予多重含义 必要性 C+中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类) 实现机制 将指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参。
2、编译系统对重载运算符的选择,遵循函数重载的选择原则。,运算符重载,7,运算符重载,规则和限制,可以重载C+中除下列运算符外的所有运算符: . .* : ?: 只能重载C+语言中已有的运算符,不可臆造新的。 不改变原运算符的优先级和结合性。 不能改变操作数个数。 经重载的运算符,其操作数中至少应该有一个是自定义类型。,8,两种形式,重载为类成员函数。 重载为友元函数。,运算符重载,9,运算符函数,声明形式 函数类型 operator 运算符(形参) 重载为类成员函数时 参数个数=原操作数个数-1 (后置+、-除外) 重载为友元函数时 参数个数=原操作数个数,且至少应该有一个自定义类型的形参。,运算符重载,10,运算符成员函数的设计,双目运算符 B 如果要重载 B 为类成员函数,使之能够实现表达式 oprd1 B oprd2,其中 oprd1 为A 类对象,则 B 应被重载为 A 类的成员函数,形参类型应该是 oprd2 所属的类型。 经重载后,表达式 oprd1 B oprd2 相当于 oprd1.operator B(oprd2),运算符重载,11,运算符重载,例 8-1,将“+”、“
3、-”运算重载为复数类的成员函数。 规则: 实部和虚部分别相加减。 操作数: 两个操作数都是复数类的对象。,#include using namespace std; class complex /复数类声明 public: /外部接口 complex(double r=0.0,double i=0.0)real=r;imag=i; /构造函数 complex operator + (complex c2); /+重载为成员函数 complex operator - (complex c2); /-重载为成员函数 void display(); /输出复数 private: /私有数据成员 double real; /复数实部 double imag; /复数虚部 ;,12,complex complex: operator +(complex c2) /重载函数实现 complex c; c.real=c2.real+real; c.imag=c2.imag+imag; return complex(c.real,c.imag); ,13,complex complex: operat
4、or -(complex c2) /重载函数实现 complex c; c.real=real-c2.real; c.imag=imag-c2.imag; return complex(c.real,c.imag); ,14,void complex:display() cout“(“real“,“imag“)“endl; int main() /主函数 complex c1(5,4),c2(2,10),c3; /声明复数类的对象 cout“c1=“; c1.display(); cout“c2=“; c2.display(); c3=c1-c2; /使用重载运算符完成复数减法 cout“c3=c1-c2=“; c3.display(); c3=c1+c2; /使用重载运算符完成复数加法 cout“c3=c1+c2=“; c3.display(); ,15,程序输出的结果为: c1=(5,4) c2=(2,10) c3=c1-c2=(3,-6) c3=c1+c2=(7,14),16,17,运算符成员函数的设计,前置单目运算符 U 如果要重载 U 为类成员函数,使之能够实现表达式 U o
《C++课件八》由会员jiups****uk12分享,可在线阅读,更多相关《C++课件八》请在金锄头文库上搜索。
建立安全生产长效机制-共创和谐平安输气管道
土石方爆破工程设计方案
康师傅百货商场制度汇编之退换货管理办法
庙头中学2012年中考百日誓师大会学生代表发言稿
围堰拆除爆破工程
华能洱源马鞍山风电场工程土石方爆破管理制度
国资委:全面开展管理提升活动-为培育世界一流企业奠定坚实基础
《专业技术人员职业发展与规划》电子书
应收票据审计方案
建筑给水排水与采暖工程质量验收用表
广播电视管理条例行政处罚裁量标准
广东电力系统调度运行操作管理规定
建筑给排水工程名词解释
幼儿园小班安全健康活动教案:宝宝误食后的急救
建业集团房屋建筑工程交房标准内容技术交底
建筑心理学论文(1)
康师傅百货商场制度汇编之工服管理程序009
建筑工程专业一级建造师继续教育培训结业报告20
廉洁风险防控回头看工作汇报材料
平台工作人员服务规范
2024-04-08 20页
2024-04-06 36页
2024-02-09 36页
2024-01-31 31页
2024-01-28 18页
2024-01-28 31页
2024-01-28 24页
2024-01-28 27页
2024-01-28 24页
2024-01-28 25页