没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论

















本文作者:黄邦勇帅
学习本文首先你应熟悉 C++中的构造函数,基本的类的声明及怎样初始化类,关于这些问题,请参看本人所作的《C++
构造函数,复制构造函数和析构函数》一文,在这篇文章中作了详细的介绍。
本文分两部分即继承和虚函数与多态性,本文第一部分详细讲解了继承时的构造函数和析构函数的问题,父类与子类的
同名变量和函数问题,最后介绍了多重继承与虚基类。本文第二部分重点介绍了虚函数与多态性的问题,因此学习虚函
数的基础是继承,因此在学习虚函数前应学好继承。本文详细易懂,内容全面,是学习 C++的不错的资料。
本文内容完全属于个人见解与参考文现的作者无关,其中难免有误解之处,望指出更正。
声明:禁止抄袭本文,若需要转载本文请注明转载的网址,或者注明转载自“黄邦勇帅”。
主要参考文献:
1、C++.Primer.Plus.第五版.中文版 [美]Stephen Prata 著 孙建春 韦强译 人民邮电出版社 2005 年 5 月
2、C++.Primer.Plus.第四版.中文版 Stanley B.Lippman、Barbara E.Moo 著 李师贤等译 人民邮电出版社 2006 年 3 月
3、C++.Primer.Plus.第三版.中文版 Stanley B.Lippman 等著 潘爱民 张丽译 中国电力出版社 2002 年 5 月
4、C++入门经典 第三版 [美]Ivor Horton 著 李予敏译 清华大学出版社 2006 年 1 月
5、C++参考大全 第四版 [美]Herbert Schidt 著 周志荣 朱德芳 于秀山等译 电子工业出版社 2003 年 9 月
6、21 天学通 第四版 C++ [美]Jesse Liberty 著 康博创作室 译 人民邮电出版社 2002 年 3 月
14 继承(基类,父类,超类),派生类,子类
一:继承中的访问权限关系。
1.基类,父类,超类是指被继承的类,派生类,子类是指继承于基类的类.
2.在 C++中使用:冒号表示继承,如 class A:public B;表示派生类A从基类B继承而来
3.派生类包含基类的所有成员,而且还包括自已特有的成员,派生类和派生类对象访问基类中的成员就像访问自已的
成员一样,可以直接使用,不需加任何操作符,但派生类仍然无法访问基类中的私有成员.
4.在C++中派生类可以同时从多个基类继承,Java 不充许这种多重继承,当继承多个基类时,使用逗号将基类隔开.
5.基类访问控制符,class A:public B 基类以公有方式被继承,A:private B 基类以私有方式被继承,A:protected B 基类以
受保护方式被继承,如果没有访问控制符则默认为私有继承。
6. protected 受保护的访问权限:使用 protected 保护权限表明这个成员是私有的,但在派生类中可以访问基类中的受保
护成员。派生类的对象就不能访问受保护的成员了。
7. 如果基类以 public 公有方式被继承,则基类的所有公有成员都会成为派生类的公有成员.受保护的基类成员成为派
生类的受保护成员
7.如果基类以 private 私有被继承,则基类的所有公有成员都会成为派生类的私有成员.基类的受保护成员成为派生类
的私有成员.
8.如果基类以 protected 受保护方式被继承,那么基类的所有公有和受保护成员都会变成派生类的受保护成员.
9.不管基类以何种方式被继承,基类的私有成员,仍然保有其私有性,被派生的子类不能访问基类的私有成员.
例:继承中的访问权限关系
class A {int a; protected:int b; public:int c; A(){a=b=c=1;} };
//类B以公有方式从基类A继承
class B:public A
{public: int d;
B(){//a=2; //错误,不能访问基类中的私有成员
b=2; //正确,可以在类中访问基类中的受保护成员,但类的对象不能访问,基类中的受保护成员b在类B中仍然是受保护成员
c=d=2;} }; //基类中的公有成员c在类B中仍然是公有成员
//以受保护和私有方式从基类A继承。
class C:protected A {public: int e; C(){//a=3; //错误,不能访问基类中的私有成员
b=c=e=3; }};//这里基类受保护成员b和公有成员c都成为类C中的受保护成员。
class D:private A {public: D(){b=c=4;} };//基类中的公有和受保护成员都成为了类D中的私有成员。
//验证受保护和私有方式继承的访问权限。
class C1:public C
{public: C1(){b=c=e=4;} };//正确;类A中的成员b和c在类C中是以受保护方式被继承的,b和c都成为了类C中的受保护成员。
class D1:public D
{public:D1(){//b=5; //错误,在A中受保护的成员b在类D中是以私有方式继承的,这样b就成为了类D中的私有成员,所以无法访问。
资源评论


luffylli
- 粉丝: 0
- 资源: 15
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
