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

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

第6章 继承.
第8章 继承和派生 8.1 继承与派生 8.2 派生类对基类成员的访问 8.3 派生类的构造函数与析构函数 8.4 多重继承与虚基类.
课程 要求 参考 书目 课程 内容 课程 练习.
面向对象的C++程序设计基础 第 4 章 继承与派生.
四資二甲 第三週作業 物件導向程式設計.
7.2 访问控制 —— 公有继承 公有继承练习 //Point.h #ifndef _POINT_H #define _POINT_H class Point { //基类Point类的定义 public: //公有函数成员 void initPoint(float x = 0, float.
内容提要 代码重用 类的继承 多态 抽象类 多重继承 虚拟继承. 常宝宝 北京大学计算机科学与技术系
计算机可视化编程 基于Visual C++6.0的面向对象编程 第 四 讲 主讲教师:隋振                学时:32.
C++面向对象程序设计 第八章 继承和派生.
预备知识——C++、类与对象 C++要素 类和对象 模版 类的继承.
第12章 组合与继承 欢迎辞 第14次见面!.
面向对象程序设计 第三章 C++面向对象程序设计 武汉大学 赵小红.
第6章 继 承 主讲人:陈南京.
第四章 继承和派生类 汽车 专用汽车 运输汽车 货车 客车 消防车 洒水车 最普遍、最一般,可以自行驱动 含有汽车的特性,同时与汽车有不同
第14章 c++中的代码重用.
C++语言程序设计 第七章 继承与派生 清华大学 郑 莉.
C++ 面对对象程序设计 授课老师:.
第11章 类的继承和派生 继承是面向对象程序设计方法的四个基本特征之一,是程序代码可重用性的具体体现。
第6章 多态性与虚函数.
4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板
版权所有 复制必究 第 3 章 C++面向对象程序设计.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
授课老师:龚涛 信息科学与技术学院 2018年4月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第六章 面向对象程序设计基础.
第10章 C++面向对象程序设计 本章导读 C语言是一种结构化程序设计语言,它是面向过程的,在处理较小规模的程序时一般比较容易实现,而当程序规模较大时,C语言就显示出了它的不足。在这种情况下C++应运而生,C++语言是从C语言演变而来的,它保留了C语言的所有优点,同时也增加了面向对象的功能。现在C++已成为程序设计中应用最广泛的一种语言。
第11讲 类的继承 1. 类的继承的概念 2. 类的单继承机制 3. 单继承中的构造函数和析构函数.
第12讲 多继承与虚基类 多继承 虚基类.
辅导课程六.
数据抽象 --对象与类 陈家骏老师.
第9章 类和对象(一) 9.1 面向对象的基本概念 9.2 类与对象的声明和定义 9.3 成员函数 9.4 对象的访问 9.5 对象的存储.
第1章 C++基础.
第六章 数据抽象-类 胡昊 南京大学计算机系软件所.
第八章 继承与派生 丘志杰 电子科技大学 计算机学院 软件学院.
第十一章 继承和派生. 主讲教师:全红艳 第十一章 继承和派生.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
C++大学基础教程 第9章 继承与派生 北京科技大学.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第11讲 类的继承 1. 类的继承的概念 2. 类的单继承机制 3. 单继承中的构造函数和析构函数.
$9 泛型基础.
内容 构造函数 析构函数 对象数组 对象指针 this指针 const数据保护. 类和对象的使用 潘荣江 山东大学.
C++复习3 ----类的继承与派生.
C#面向对象程序设计 $6 深入理解类.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C++语言程序设计 第四章 类与对象.
Classes (1) Lecture 6.
第13讲 多态 友员函数 多态性与虚函数 纯虚函数和抽象类.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
第二章 类型、对象、运算符和表达式.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计教程 第8章 继承与派生 第8章 继承与派生 制作人:杨进才.
辅导课程十五.
#include <iostream.h>
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
C++与数据结构简明教程 第五章 类和对象.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
第十二讲 继承 与 派生.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
Presentation transcript:

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

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

基本知识 a C++语言程序设计

8.3派生类的构造和析构 基类的构造函数和析构函数不能被派生类所继承; 派生类一般需要定义自己的构造函数和析构函数; 派生类的构造及析构函数通常会受到基类构造及析构函数的影响。 基类只有无参数构造函数 在基类具有无参构造函数,派生类又没有定义构造函数的时候,系统会自动调用基类的无参构造函数来构造派生类对象中的基类成分。 基类的构造函数一般被声明为public访问控制方式。若基类提供了一些构造函数,并且只希望由派生类使用这些构造函数,那么就需要在基类中将这样的特殊构造函数定义为 protected。 C++语言程序设计

8.3派生类的构造和析构 派生类的构造函数 派生类构造函数的形式如下。 C++语言程序设计 派生类的构造函数要初始化本类的数据成员,还要调用基类的构造函数,并为基类构造函数传递参数,完成派生类中基类成分的初始化。 派生类构造函数的形式如下。 派生类名::派生类名(基类所需的形参,本类成员所需的形参): 基类1(基类参数表1),基类2(基类参数表2),…,基类n(基类参数表n) { 本类基本类型数据成员初始化; } 初始化列表 C++语言程序设计

例8-3 单继承派生类构造函数 //TShape03.cpp #include "TShape03.h" //TShape03.h #include <iostream> TShape::TShape(uint x, uint y){ _x = x; _y = y; _RED = 0; _GREEN = 0; _BLUE = 0; } TShape::~TShape(){ cout<<"TShape destructed"<<endl; void TShape::Draw(){ cout<<"This is TShape::Draw()"<<endl; void TShape::getXY(uint& x, uint& y){ x = _x; y = _y; void TShape::getRGB(uchar& R, uchar& G, uchar& B){ R = _RED; G = _GREEN; B = _BLUE; //TShape03.h typedef unsigned int uint; typedef unsigned char uchar; class TShape{ private: uint _x, _y; //几何形状的位置 protected: /*声明几何形状的颜色。允许TShape的派生类直接访问这些颜色属性,而不允许在类外通过类的对象直接访问这些属性 */ uchar _RED, _GREEN, _BLUE; public: TShape(uint x, uint y); void getXY(uint& x, uint& y); void setXY(uint x, uint y); void Draw(); void getRGB(uchar& R, uchar& G, uchar& B); void setRGB(uchar R, uchar G, uchar B); };

class TEllipse: public TShape { protected: uint _longR, _shortR; //TEllipse03.h #include "TShape03.h" class TEllipse: public TShape { protected: uint _longR, _shortR; public: TEllipse(uint longR, uint shortR, uint x, uint y); ~TEllipse(); void Draw(); void getR(uint& longR, uint& shortR); void setR(uint longR, uint shortR); }; _longR = longR; _shortR = shortR; //在派生类构造函数中初始化基类保护成员 _RED = 0x00; _GREEN = 0x00; _BLUE = 0x00; } TEllipse::~TEllipse(){ void TEllipse::Draw(){ uint x, y; getXY(x, y); //调用基类函数获取椭圆的圆心坐标 std::cout<<"Draw an ellipse with color("; std::cout<<static_cast<uint>(_RED) <<"," <<static_cast<uint>(_GREEN)<<"," <<static_cast<uint>(_BLUE) <<") at point("; // cout<<_x<<“,”<<_y<<“)”<<endl; //错误!在派生类中不能访 问基类私有成员 cout<< x<<","<< y<<")"<<endl; //TEllipse03.cpp #include "TEllipse03.h" #include <iostream> TEllipse::TEllipse(uint longR, uint shortR, uint x, uint y):TShape(x,y){

8.3派生类的构造和析构 派生类不能继承基类的析构函数,需要自己定义析构函数,以便在派生类对象消亡之前进行必要的清理工作。 派生类的析构函数只负责清理它新定义的成员,一般来说,只清理位于堆区的成员。 如果没有特殊指针数据成员需要清理,可以使用由系统提供的默认析构函数。 当派生类对象消亡时,系统调用析构函数的顺序与建立派生类对象时调用构造函数的顺序正好相反,即先调用派生类的析构函数,再调用基类的析构函数。 C++语言程序设计