中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第八章 多态性

C++语言程序设计 第八章多态性
1 第八章 多态性 C++语言程序设计

C++语言程序设计 本拿主要内容 ●多态性 ·运算符重载 。虚函数 ●纯虚函数 。抽象类 ·深度探索 *米 a 米
C++语言程序设计 2 本章主要内容 多态性 运算符重载 虚函数 纯虚函数 抽象类 深度探索

C++语言程序设计 多态性的概念 多 态 ● 多态性是面向对象程序设计的重要特 性 征之一。 概 ● 多态性是指发出同样的消息被不同类 述 型的对象接收时有可能导致完全不同 的行为。 -消息:对类的成员函数的调用 不同的行为不阿的实现,即调用了柔半 同的函数
C++语言程序设计 多态性的概念 多态性是面向对象程序设计的重要特 征之一。 多态性是指发出同样的消息被不同类 型的对象接收时有可能导致完全不同 的行为。 – 消息:对类的成员函数的调用 – 不同的行为:不同的实现,即调用了不 同的函数 3 多态性概述

C++语言程序设计 多态的类型 多 态 强制多态:数据类型转换(隐式或显 性 概 式) 述 ●重载多态:函数重载,运算符重载 ●包含多态:虚函数 ·类型参数化多态:函数模板, 类模板举
C++语言程序设计 多态的类型 强制多态:数据类型转换(隐式或显 式) 重载多态:函数重载,运算符重载 包含多态:虚函数 类型参数化多态:函数模板,类模板 4 多态性概述

C++语言程序设计 多态的实现 态 ·绑定:确定同名操作的具体操作对象的 性 过程 概 述 ●编译时多态:静态绑定 强制、重载和参数多态 ·运行时多态:动态绑定 一包含多态
C++语言程序设计 多态的实现 绑定:确定同名操作的具体操作对象的 过程 编译时多态:静态绑定 – 强制、重载和参数多态 运行时多态:动态绑定 – 包含多态 5 多态性概述

C++语言程序设计 问题举例一 复数的运算 运 算class Complex{/复数类声明 符 public: 重 Complex(double r 0.0,double i 0.0){ real r;imag=i; 载 void display()const; /显示复数的值 private: double real; double imag; };
C++语言程序设计 6 问题举例——复数的运算 class Complex { //复数类声明 public: Complex(double r = 0.0,double i = 0.0) { real = r; imag=i; } void display() const; //显示复数的值 private: double real; double imag; }; 运算符重载

C++语言程序设计 问题举例 复数的运算 远 算 ●用“+”、“”能够实现复数的加减运 符 算吗? 重 载 ●3 实现复数加减运算的方法 一重载“+”、“”运算符
C++语言程序设计 7 问题举例——复数的运算 用“+”、“-”能够实现复数的加减运 算吗? 实现复数加减运算的方法 ——重载“+”、“-”运算符 运算符重载

C++语言程序设计 运算符重载的实质 运 算 ·运算符重载是对已有的运算符赋予多重含义 符 。必要性 重 一C++中预定义的运算符其运算对象只能是基本数 据类型,而不适用于用户自定义类型(如类) 载 。实现机制 一将指定的运算表达式转化为对运算符函数的调 用,运算对象转化为运算符函数的实参 编译系统对重载运算符的选择,遵循函数重载 的选择原则
C++语言程序设计 8 运算符重载的实质 运算符重载是对已有的运算符赋予多重含义 必要性 – C++中预定义的运算符其运算对象只能是基本数 据类型,而不适用于用户自定义类型(如类) 实现机制 – 将指定的运算表达式转化为对运算符函数的调 用,运算对象转化为运算符函数的实参。 – 编译系统对重载运算符的选择,遵循函数重载 的选择原则。 运算符重载

C++语言程序设计 规则和限制 运 算 ● C+不允许重载下列四个运算符: .*:?: 符 重 ●只能重载C++语言中已有的运算符, 不可臆造新的。 载 ·不改变原运算符的优先级和结合性。 ●不能改变操作数个数。 ● 经重载的运算符,其操作数中至少应 该有一个是自定义类型
C++语言程序设计 9 运算符重载 规则和限制 C++不允许重载下列四个运算符: . .* :: ?: 只能重载C++语言中已有的运算符, 不可臆造新的。 不改变原运算符的优先级和结合性。 不能改变操作数个数。 经重载的运算符,其操作数中至少应 该有一个是自定义类型

C++语言程序设计 两种形式 运 算 符 。重载为类的非静态成员函数 重 重载为非成员函数 载 米
C++语言程序设计 10 两种形式 重载为类的非静态成员函数 重载为非成员函数 运算符重载
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第五章 数据的共享与保护.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第四章 类与对象.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第六章 数组、指针与字符串.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第三章 函数.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第二章 C++简单程序设计.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)C++语言漫谈.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第一章 绪论(主讲:黄章进).pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(复习提纲,主讲:黄章进).pdf
- 《C++程序设计》课程教学资源(参考资料)C++ Programming ISO/IEC 14882 C++11(规范)Information technology — Programming languages — C++.pdf
- 《C++程序设计》课程教学资源(参考资料)C++ Programming ISO/IEC 14882 2003(规范文档)INTERNATIONAL STANDARD(Second edition).pdf
- 中国科学技术大学:单变量均匀静态细分格式的连续性分析和构造 Continuity Analysis and Construction of Uniform Stationary Univariate Subdivision Schemes.pdf
- 中国科学技术大学:NEW PROOF OF DIMENSION FORMULA OF SPLINE SPACES OVER T-MESHES VIA SMOOTHING COFACTORS.pdf
- 中国科学技术大学:JOURNAL OF UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA.pdf
- 中国科学技术大学:一类多参数的曲线细分格式.pdf
- 中国科学技术大学:Estimating Error Bounds and Subdivision Depths for Loop Subdivision Surfaces.pdf
- 中国科学技术大学:An Efficient Approach to Real-Time Sky Simulation.pdf
- 中国科学技术大学:Bounding the Distance between a Loop Subdivision Surface and Its Limit Mesh.pdf
- 中国科学技术大学:Bounding the Distance between a Loop Subdivision Surface and Its Limit Mesh.pdf
- 中国科学技术大学:A bound on the approximation of a Catmull-Clark subdivision surface by its limit mesh.pdf
- 中国科学技术大学:Full Camera Calibration from a Single View of Planar Scene.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第七章 继承与派生.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第九章 群体类和群体数据的组织.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第十章 C++标准模板库.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第十一章 流类库与输入输出.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第十二章 异常处理.pdf
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第一章 绪论(主讲:郑莉).ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十章 C++标准模板库.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十一章 流类库与输入/输出.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十二章 异常处理.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第二章 C++简单程序设计.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第三章 函数.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第四章 类与对象.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第五章 C++程序的结构.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第六章 数组、指针与字符串.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第七章 继承与派生.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第八章 多态性.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第九章 群体类和群体数据的组织.ppt
- 中国科学技术大学:《计算机图形学》课程教学资源(讲义)第一章 计算机图形学概述 Computer Graphics.pdf
- 中国科学技术大学:《计算机图形学》课程教学资源(讲义)第三章 OpenGL编程.pdf
- 中国科学技术大学:《计算机图形学》课程教学资源(讲义)第二章 计算机图形系统.pdf