美文网首页
C++第五篇继承与派生

C++第五篇继承与派生

作者: GodsLeft | 来源:发表于2015-04-07 17:34 被阅读34次

派生类将继承它所有基类中除构造函数和析构函数之外所有成员,因此派生类必须负责调用基类构造函数


  • 对基类成员和成员对象的初始化必须在成员初始化列表中进行
  • 派生类只用负责其直接基类的构造

多继承二义性

  • 不同基类相同成员
    class Base1{public:void fun(){}}; class Base2{public:void fun(){}}; class Derived : public Base1,public Base2{}; int main(){ Derived obj; obj.fun(); //产生二义性 obj.Base1::fun(); //正解 return 0; }
  • 共同基类成员(共同祖父类)
    class A{ public: int a;}; class B1 : public A{ private: b1;}; class B2 : public A{ private: b2;}; class D : public B1,public B2{public: void fun(); private: int d;} int main(){ D obj; obj.a = 1; //产生二义性,两个父类有共同的父类(本类的祖父类) obj.A::a = 1; //obj.A::a这种形式是错误的 obj.B1::a = 1; //这种形式是对的 return 0; }

虚基类

为了解决一个祖父类,在其孙类中可能产生的二义性(上面第二种情况)
class 派生类名 : virtual 继承方式 基类名{};

  • 虚基类需要特别注意构造函数,在孙类中需要对祖父类(虚基类)进行初始化(非虚基类只需初始化父类,不需要初始化祖父类),(例子省略)

//虚基类例子 class Base{}; class B1 : virtual public Base{}; class B2 : virtual public Base{}; class B3 : public Base{}; class Derived : public B1,public B2,public B3{};
所以Derived从B1,B2只继承一份Base的成员,但是从B3将继承另一份Base成员
私以为虚基类并无多大的用处,至少到现在为止我接触的C++项目中用到的很少,所以介绍并不详细。

相关文章

  • C++第五篇继承与派生

    派生类将继承它所有基类中除构造函数和析构函数之外所有成员,因此派生类必须负责调用基类构造函数 对基类成员和成员对象...

  • C++奇淫技巧,程序员为啥天天学继承与派生,真的有这么难吗

    1. 继承与派生 1.1继承与派生的概念 在C++中,可重用性是通过继承这一机制来实现的。所谓继承,就是在一个已存...

  • c++ 继承与派生

    派生类的构造函数和析构函数 用户在声明类时可以不定义构造函数,系统会自动设置一个默认的构造函数,在定义类对象时会自...

  • C++基础:类与对象三

    作者:慧科集团华东校区-朱家聪老师,转载请注明出处及本链接。 继承与派生 基本概念 在C++中,继承和派生的概念基...

  • C++之类继承与派生

    派生类的声明: 一个派生类可以同时有多个基类,这种情况称为多重继承。派生类只有一个基类,称为单继承。慎用多继承! ...

  • c++学习笔记第六天

    继承与派生(Inherit&&Derive) 7.1.引入 在 C++中可重用性(software reusabi...

  • c++继承

    在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生...

  • C++类的继承与派生

    转自大神博客凡程子 一、基本概念 类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派...

  • C++ - 继承与派生类

    派生类对象的体积,等于基类对象的体积,再加上派生类对象自己的成员变量的体积。在派生类对象中,包含着基类对象,而且基...

  • C++继承和派生

    C++通过继承关系,实现了代码的可重用性。 public表示继承方式,也表示访问权限 一、继承方式和访问权限的影响...

网友评论

      本文标题:C++第五篇继承与派生

      本文链接:https://www.haomeiwen.com/subject/finaxttx.html