浅谈c++继承与对象模型

来源:互联网 发布:钟无艳国语网络歌手 编辑:程序博客网 时间:2024/05/17 06:05
   刚刚学习过c++的继承方面的知识,现在和大家分享下学习心得。继承可以实现代码的复用,并且允许程序员进行一定的扩展,大大减少了程序员的工作量。先给大家铺垫一点知识, 关于派生类的权限在继承后与基类权限的关系:

这里写图片描述

首先进程分为以下几个继承方式:
1、单继承
2、多继承
3、菱形继承
我们先谈谈一种比较简单的继承方式,单继承吧

这里写图片描述

  首先我们写了一个单继承的的代码,那么它的基类和派生类是在内存空间中是怎样存储的呢?如下图所示,要注意一点,在继承的结构中,如果基类显示定义了缺省构造参数,则派生类会合成一个构造函数。还有同名隐藏问题,如果基类和派生类有重名(成员变量、函数),则在使用时优先使用派生类的成员函数和成员变量。  赋值不兼容原则:(这里只针对public继承)  1、派生类对象可以直接赋值给基类。  2、基类指针或引用可以直接指向派生类对象。  3、友元函数和operator=不允许被继承。

单继承存储结构

 多继承可以看作是单继承的扩展。所谓多继承是指派生类具有多个基类,派生类与每个基类之间的关系仍可看作是一个单继承。

 
  多继承下派生类的定义格式如下:
 
  class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
   {
    <派生类类体>
   };
 
  其中,<继承方式1>,<继承方式2>,…是三种继承方式:public、private、protected之一。例如:
 
class A
{

};
class B
{

};
class C : public A, public B
{

};
 
 
其中,派生类C具有两个基类(类A和类B),因此,类C是多继承的。按照继承的规定,派生类C的成员包含了基类A, B中成员以及该类本身的成员。
 
  多继承的构造函数
 
  在多继承的情况下,派生类的构造函数格式如下:
 
  <派生类名>(<总参数表>):<基类名1>(<参数表1>),<基类名2>(<参数表2>),…
   <子对象名>(<参数表n+1>),…
    {
     <派生类构造函数体>
    }
 
  其中,<总参数表>中各个参数包含了其后的各个分参数表。
 
 称之。
这里写图片描述)thEast)
。。。。。。。
钻石继承,他是单继承和多继承的结合体,同样我们也给出一个简单的菱形继承的代码。

原创粉丝点击