C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.

Slides:



Advertisements
Similar presentations
胃炎肠炎胃炎肠炎 心脏病心脏病 血管病变血管病变 夭折夭折 肾病肾病 癌症癌症 气管炎气管炎 疟疾疟疾 胃炎肠炎肺炎结核病 肺炎肺炎 结核病结核病 二十世纪六十年代 十大死亡原因排行榜.
Advertisements

项目7 面向对象高级.
医用超声耦合剂 南京朗众药业公司总代理.
天津1班面试专项练习1 综合分析现象类 主讲:凌宇 时间:5月21日 19:00—22:00.
45天备考指南 2013年下半年国考资格证笔试系列讲座(2) 华图教师事业部 石杨平.
第 2 章 初探 C++.
2014政法干警备考平台 2014政法干警考试群⑨ 中公教育政法干警考试 ——微博 中公教育政法干警考试
四資二甲 第三週作業 物件導向程式設計.
资料分析 如何攻破最后瓶颈 主讲老师:姚 剑 4月6日20:00 YY频道:
2016中重卡网络规划 中重卡营销部 2016年6月.
第6章 多态性与虚函数.
09学前教育班 魏文珍 自我介绍.
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
類別與物件 Class & Object.
第八章 类和对象.
走向C++之路 WindyWinter WindyWinter感谢诸位前来捧场。
資料大樓 --談指標與陣列 綠園.
函數(一) 自訂函數、遞迴函數 綠園.
核探测与核电子学国家重点实验室 报告人:董磊 指导老师:宋克柱
Derived Class 前言 衍生類別的定義 單一繼承 public, protected, 和 privated 基底類別
教材 《C++程序设计》.谭浩强. 清华大学出版社 王雪晶
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
刘胥影 东南大学计算机学院 面向对象程序设计1 2011~2012第3学期 刘胥影 东南大学计算机学院.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
第一章 程序的基本结构. 第一章 程序的基本结构 教材及授课结构 本章目标 基本内容 扩展阅读 上机指导 应用举例 习题.
刘胥影 东南大学计算机学院 面向对象程序设计1 2010~2011第3学期 刘胥影 东南大学计算机学院.
第3章 继承和派生.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
程式撰寫流程.
C++语言程序设计教程 第7章 类与对象 第7章 类与对象.
C#面向对象程序设计 $7 继承和多态性.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
谭浩强 编著 中国高等院校计算机基础教育课程体系规划教材 C++程序设计.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
六、函数 教学目标: 函数的概念、定义、调用和返回 带自定义函数的程序设计 递推算法 递归思想及算法实现 函数的参数传递方式 C语言程序设计.
劉崇汎 崑山科技大學 電腦與通訊系 DLL的建立與引用 劉崇汎 崑山科技大學 電腦與通訊系
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
C++语言程序设计 C++语言程序设计 第五章 函数 第十一组 C++语言程序设计.
C#程序设计基础 $3 成员、变量和常量.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
物件導向程式設計 CH2.
Inheritance -II.
C++程式設計入門 變數與運算子 作者:黃建庭.
C++大学基础教程 第10章 运算符重载 北京科技大学 2019/5/7 北京科技大学.
第二章 类型、对象、运算符和表达式.
山清水秀的林芝 yy 曾元一
第九章 物件導向-進階.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
#include <iostream.h>
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计 第十章 C++标准模板库 成都信息工程学院计算机系.
谭浩强编著 C++面向对象程序设计 授课教师:姬广永 学习网站:
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
10.4 圓之切線方程 附加例題 6 附加例題 7 © 文達出版 (香港 )有限公司.
變數與資料型態  綠園.
資料!你家住哪裏? --談指標 綠園.
資料結構與C++程式設計進階 C++與資料結構 講師:林業峻 CSIE, NTU 7/ 5, 2010.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计

“ 目录 C++语言程序设计 基本知识 编程技能 刨根问底 继承的概念 基类和派生类 派生类的构造和析构 同名覆盖与重载 多继承 同名覆盖与重载 转换与继承 在主函数中增加调试信息 C++语言程序设计

刨根问底 c C++语言程序设计

(I)同名覆盖与重载 Override与Overload:前者是“同名覆盖”,在类继承中才会出现;后者是“重载”,在同一作用域范围内,由参数个数或类型不同的多个同名函数构成,可以单独出现,也可以与Override现象同时出现。 一般来说,同名覆盖现象中的多个函数原型(函数类型、名字、参数)是相同的,而重载现象中的多个函数原型(参数)是不同的。 11. void func() {cout<<"deriver::func()"<<endl;} 12. void func(int x) {cout<<"deriver::func("<<x<<")"<<endl;} 13.}; 14.int main(){ 15. base m_base; 16. deriver m_deriver; 17. m_base.func(); 18. m_deriver.func(); 19. m_deriver.func(10); 20. return 0; 21.} 1.//例8-7,包含1个文件: Main07.cpp 2.//Main07.cpp 3.#include <iostream> 4.using namespace std; 5.class base{ 6.public: 7. void func() {cout<<"base::func()"<<endl;} 8.}; 9.class deriver:public base{ 10.public: 第11行与第12行代码函数名相同而参数不同,形成了重载;第7行与第11行的函数原型相同但是分别处于基类与派生类中,构成了同名覆盖。 C++语言程序设计

(II)转换与继承 每个派生类对象包含一个基类部分,这意味着可以像使用基类对象一样在派生类对象上执行基类的操作,这就涉及派生类基类的转换。该转换包括以下3种情况。 派生类对象转换为基类对象。 用派生类对象给基类对象赋值 基类对象指针指向派生类对象。 用派生类对象初始化基类对象的引用。 C++语言程序设计

#include <iostream> using namespace std; class TShape { 派生类对象转换为基类对象 #include <iostream> using namespace std; class TShape { protected: int x, y; public: TShape(int mx=0, int my=0) { x=mx; y=my; } void Show() {cout<<"x="<<x<<"\t y="<<y;} }; class TCircle : public TShape { protected: int r; public: TCircle(int mx=0, int my=0, int mr=1): TShape(mx, my) { r = mr; } void Show() {TShape::Show();cout<<"\tr="<<r; } };

// s = static_cast<TShape>(c); cout<<"s=c\t\t"; 派生类对象转换为基类对象   s = c; //用派生类对象为基类对象赋值 // s = static_cast<TShape>(c); cout<<"s=c\t\t"; s.Show(); cout<<endl; return 0; } int main(){ TShape s; TCircle c(1,2,3);   cout<<"TShape s\t"; s.Show(); cout<<endl; cout<<"TCircle c\t"; c.Show(); cout<<endl;

class TCircle : public TShape { protected: int r; public: 基类对象指针指向派生类对象 class TCircle : public TShape { protected: int r; public: TCircle(int mx=0, int my=0, int mr=1): TShape(mx, my) { r = mr; } void Show() {TShape::Show();cout<<"\tr="<<r; } }; #include <iostream> using namespace std; class TShape { protected: int x, y; public: TShape(int mx=0, int my=0) { x=mx; y=my; } void Show() {cout<<"x="<<x<<"\t y="<<y;} };

TShape* ps = dynamic_cast<TShape*>(&c); //基类对象指针 指向派生类对象 基类对象指针指向派生类对象 TShape* ps = dynamic_cast<TShape*>(&c); //基类对象指针 指向派生类对象 if(0!=ps) { cout<<"ps=&c\t\t"; ps->Show(); cout<<endl; } return 0; int main(){ TCircle c(1,2,3); cout<<"TCircle c\t"; c.Show(); cout<<endl;   //TShape* ps = &c;

(II)转换与继承 基类到派生类的转换 C++编译器可以自动将派生类对象转换为基类对象(隐式类型转换) 从基类到派生类不存在转换 //以下代码仅为示例 TShape s; TCircle c = s; //错误!不能将基类转换为派生类 TCircle* pc = &s; //错误!不能将基类转换为派生类 TCircle& rc = s; //错误!不能将基类转换为派生类 C++语言程序设计