找不到工作的人还在学习(c++4)

继承与接口

整个c++程序设计全面围绕面向对象的方式进行。类的继承特性是c++的一个非常重要的机制。继承特性可以使一个新类获得其父类的操作和数据结构,程序员只需在新类中增加原有类中没有的成分。

一旦成功定义派生类,那么派生类就可以操作基类的所有数据成员,包括受保护型的,甚至我们可以在构造派生类对象的时候初始化它们,但我们不推荐这么做,因为类与类之间的操作是通过接口进行沟通的,为了不破坏类的这种封装特性,即使是父类与子类的操作也应遵循这个思想。这么做的好处

一、继承

派生类的3种继承方式小结如下:

公有继承(public)、私有继承(private)、保护继承(protected)是常用的3中继承方式。

1、公有继承方式

基类成员对其对象的可见性与一般类及其对象的可见性相同,公有成员可见,其他成员不可见。这里保护成员与私有成员相同。

基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员可见,基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态;基类的私有成员不可见,基类的私有成员仍然是私有的,派生类不可访问基类中的私有成员。

基类成员对派生类对象的可见性对派生类对象来说,基类的公有成员时可见的,其他成员是不可见的。

所以,在公有继承时,派生类的对象可以访问基类中的公有成员,派生类的成员函数可以访问基类中的公有成员和保护成员。

2、私有继承

基类成员对其对象的可见性与一般类及其对象的可见性相同,公有成员可见,其他成员不可见。

基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员是可见的,基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这歌派生类的子类访问;基类的私有成员是不可见的,派生类不可访问基类中的私有成员。

基类成员对派生类对象可见性对派生类对象来说,基类的所有成员都是不可见的。

所以,在私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承。

3、保护继承方式

这种继承方式与私有继承方式的情况相同。两者的区别仅在于对派生类的成员而言,基类成员对其对象的可见性与一般类及其对象的可见性相同,公有成员可见,其他成员不可见。

基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员是可见的,基类的公有成员和保护成员都作为派生类的保护成员,并且不能被这歌派生类的子类的对象所访问,但可以被派生类的子类所访问;基类的私有成员是不可见的,派生类不可访问基类中的私有成员。

基类成员对派生类对象的可见性对派生类来说,基类的所有成员都是不可见的。


访问规则

2、多重继承

1、请评价多重继承的优点和缺陷。

多重继承在语言上并没有什么很重要的问题,但是标准本身只对语义做了规定,而对编译器的细节没有做规定。所以在使用时(即使是继承),最好不要对内存布局等有什么假设。此类的问题还有虚析构函数等。为了避免由此带来的复杂性,通常推荐使用复合。但是,在《C++设计新思维》一书中对多重继承和模板有极为精彩的运用。

(1)多重继承本身并没有问题,如果运用得当可以收到事半功倍的效果。不过大多数系统的类层次往往有一个公共的基类,就像MFC中的Cobject,Java中的Object


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 2,840评论 0 3
  • C++类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心...
    863cda997e42阅读 677评论 0 4
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,533评论 1 51
  • 爬山行 今昔初遇桂花 朝阳柔暖,云彩披霞,故此自山来游。泛黄点点,淡香消魂,譬妃子含香。入花心醉,雅意在、自是难忘...
    木青灯阅读 158评论 0 0
  • 你爱做白日梦吗?星座上说水瓶崇尚自由、爱做白日梦,可我不是啊,我从不做白日梦,可偏偏要看《白日梦想家》。 男主...
    向向子阅读 467评论 0 0