(c++)面向对象的设计思想.ppt

  1. 1、本文档共417页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
虚基类及其派生类构造函数 建立对象时所指定的类称为最(远)派生类。 虚基类的成员是由最(远)派生类的构造函数通过调用虚基类的构造函数进行初始化的。 在整个继承结构中,直接或间接继承虚基类的所有派生类,都必须在构造函数的成员初始化表中给出对虚基类的构造函数的调用。如果未列出,则表示调用该虚基类的缺省构造函数。 在建立对象时,只有最(远)派生类的构造函数调用虚基类的构造函数,该派生类的其它基类对虚基类构造函数的调用被忽略。 虚 基 类 有虚基类时的构造函数举例 虚 基 类 #include iostream using namecpace std; class B0 //声明基类B0 { public: //外部接口 B0(int n){ nV=n;cout“Member of B0”endl;} int nV; void fun(){cout“fun of B0endl;} }; class B1: virtual public B0 { public: B1(int a,int b1) : B0(a) {nv1=b1; cout“Member of B1”endl;} int nV1; }; class B2: virtual public B0 { public: B2(int a) : B0(a) {cout“Member of B2”endl;} int nV2; }; class D1: public B1, public B2 { public: D1(int a) : B0(a), B1(a), B2(a) {cout“Member of D1”endl;} int nVd; void fund(){cout“fun of D1endl;} }; void main() { D1 d1(1); d1.nV=2; d1.fund(); d1.fun(); } * Member of B0 Member of B1 Member of B2 Member of D1 fun of D1 fun of B0 Chapter Twelve Polymorphism (第12章 多态性) C++语言程序设计 Chapter 12 Polymorphism Polymorphism(多态性) Virtual functions(虚函数) Pure virtual function(纯虚函数) Abstract class(抽象类) 多态性的概念 多态性是面向对象程序设计的重要特征之一。 多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。 多态性是面向对象编程最重要的特征之一,是指不同的对象对同一命令做出不同响应的能力。如简单的例子:P12A.cpp、P12B.cpp 多态的实现: 函数重载 运算符重载 虚函数 静态:编译时的多态 动态:运行时的多态 联编(binding) 联编:是指计算机程序自身彼此关联的过程 静态联编:在编译连接阶段完成的 动态联编:在程序运行阶段完成的 继承时的构造函数 基类的构造函数不被继承,派生类中需要声明自己的构造函数。 声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类构造函数完成。 派生类的构造函数需要给基类的构造函数传递参数 派生类的构造、析构函数 单一继承时的构造函数 派生类名::派生类名(基类所需的形参,本类成员所需的形参):基类名(参数表) { 本类成员初始化赋值语句; }; 派生类的构造、析构函数 单一继承时的构造函数举例 #includeiostream using namecpace std; class B{ public: B(); B(int i); ~B(); void Print() const; private: int b; }; 派生类的构造、析构函数 B::B() { b=0; coutBs default constructor called.endl; } B::B(int i) { b=i; coutBs constructor called. endl; } B::~B() { coutBs destructor called.endl; } void B::Print() const { coutbendl; } * class C:public B { public: C();

文档评论(0)

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

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

1亿VIP精品文档

相关文档