网站大量收购独家精品文档,联系QQ:2885784924

《面向对象程序设计》讲义11.ppt

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

《面向对象程序设计》讲义 11.2.2 通过访问声明调整访问域 (1) 访问声明仅仅调整名字的访问,不可为它说明任何类型;若名字为成员函数,在访问声明时也不准说明任何类型。 (2) 访问声明只能调整基类的保护段和公有段成员在派生类中的访问域。  (3) 访问声明仅仅用于在派生类中调整名字的访问权限,不允许在派生类中降低或提升基类成员的可访问性。 (4) 对重载函数名的访问声明将调整基类中具有该名的所有函数的访问域。 (5) 若在派生类中具有与基类中同名的函数,则基类中的此函数不允许在派生类中进行访问声明。 11.3 多 继 承 11.3.1 多继承的概念 11.3.2 多继承的定义 例如: class c:a,b { //… }; 例1 #includeiostream.h class x { protected: int a; public: void make(int i) { a=i;} }; class y { protected: int a; public: void make(int i) { a=i;} }; class z:public x,public y { // public: int make(int i) { return x::a*y::a;} }; main() { z z1; z1.x::make(10); z1.y::make(20); coutz1.make()“\n”; }; 例2 #includeiostream.h class x { int a; public: void seta(int x) { a=x;} void showa() { cout“a=”“\n”;} }; class y { int b; public: void setb(int x) { b=x;} void showb() { cout“b=”“\n”;} }; class z:public x, y { // int c; public: void setc(int x,int y) { c=x; setb(y);} // y类的私有成员z类无权访问,因 //此调用setb()对y类中的b赋值 void showc() { showa(); showb(); cout“c=”c“\n”; }; main() { z obj; obj.seta(5); //调用的是基类x中的成员函数,因x为公有派生 obj.setc(7,9); obj.showc(); obj.showa(); //调用x中的成员函数 //obj.showb(); //此处不能调用y::showb(),因为z对y是私有派生 return 1; } 运行结果为: a=5 b=9 c=7 a=5 11.3.3 多继承的构造函数与析构函数 1. 构造函数的定义 2. 构造函数与析构函数的执行顺序 举例说明如下: #includeiosteram.h class x { //… public: x() {cout“the constructor o

文档评论(0)

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

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

1亿VIP精品文档

相关文档