第四讲类与对象.ppt

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

派生类 王雪晶 内容 引言 派生类 抽象类 类层次结构设计 类层次结构和抽象类 引言 一个概念不会孤立地存在,它与一些相关的概念共存,并在与相关概念的相互关系中表现出它的大部分力量。 派生类的概念及其相关的语言机制使我们能表述一种层次性的关系(表述一些类的共性)。 面向对象的程序设计的基础 派生类 派生类 派生类 派生类 派生类 派生类 派生类 派生类—成员函数 派生类—成员函数 派生类—成员函数 派生类—构造函数和析构函数 派生类—构造函数和析构函数 派生类—构造函数和析构函数 派生类—构造函数和析构函数 类对象的构造: 首先是基类,而后是成员,再后才是派生类本身。 类对象的销毁: 首先是派生类本身,而后是成员,再后才是基类。 派生类—复制 派生类—类层次结构 派生类—类层次结构 派生类—类型域 派生类—类型域 派生类—类型域 派生类—类型域 派生类—虚函数 派生类—虚函数 派生类—虚函数 派生类—虚函数 派生类—虚函数 抽象类 抽象类 抽象类 抽象类 抽象类 类层次结构的设计 设计:为某个程序提供一种方式,通过它可以从某种用户界面取得一个整数。 一个传统的层次结构 一个传统的层次结构 一个传统的层次结构 一个传统的层次结构 一个传统的层次结构 一个传统的层次结构 抽象类 抽象类 抽象类 其它实现方式 其它实现方式 其它实现方式 其它实现方式 class Shape { public: virtual void rotate(int) { error(Shape::rotate); } // inelegant virtual void draw() { error(“Shape::draw); } // ... }; class Shape { // abstract class public: virtual void rotate(int) = 0; // pure virtual function virtual void draw() = 0; // pure virtual function virtual bool is_closed() = 0; // pure virtual function // ... }; 把类Shape的虚函数声明为纯虚函数。 如果一个类存在一个或几个纯虚函数, 这个类就是抽象类。不能创建抽象类对象。 class Point { /* ... */ }; class Circle : public Shape { public: void rotate(int) { } // override Shape::rotate void draw(); // override Shape::draw bool is_closed() { return true; } // override Shape::is_closed Circle(Point p, int r); private: Point center; int radius; }; 抽象类只能用作界面,作为其它类的基类: class Polygon : public Shape { // abstract class public: bool is_closed() { return true; } // override Shape::is_closed // ... draw and rotate not overridden ... }; Polygon b; // error: declaration of object of abstract class Polygon class Irregular_polygon : public Polygon { listPoint lp; public: void draw();   // override Shape::draw void rotate(int); // override Shape::rotate // ... }; Irregular_polygon poly(some_points); // fine (assume suitable constructor) 分步地构建一个实现 class Character_device { public: virtual int open(int opt) = 0; virtual int close(int opt) = 0; virtual int read(char* p, int n) = 0; virtual int write(const char* p,

文档评论(0)

sunhao111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档