zoukankan      html  css  js  c++  java
  • 虚基类构造函数的调用

    #include <iostream>


    using namespace std;
    class base
    {
    protected:
      int x;
    public:
      base(int x1)
      {
        x=x1;
        cout<<"constructing base,x="<<x<<endl;
      }
      ~base()
      {
        cout<<"disconstructing base"<<endl;
      }

    };
    class base1:virtual public base
    {
      int y;
    public:
      base1(int x1,int y1):base(x1)
      {
       y=y1;
       cout<<"constructing base1,y="<<y<<endl;
      }
    };
    class base2:virtual public base
    {
      int z;
    public:
      base2(int x1,int z1):base(x1)
      {
        z=z1;
        cout<<"constructing base2,z="<<z<<endl;
      }
      ~base2()
      {
        cout<<"disconstructing base2"<<endl;
      }
    };
    class derived:public base1,public base2
    {
      int xyz;
    public:
      derived(int x1,int y1,int z1,int xyz1):base(x1),base1(x1,y1),base2(x1,z1)
      {
        xyz=xyz1;
        cout<<"constructing derived xyz="<<xyz<<endl;
      }
      ~derived()
      {
        cout<<"disconstructing derived"<<endl;
      }
    };

    int main()
    {
      derived obj(1,2,3,4);
      return 0;
    }
    以上代码,简要概括虚基类构造函数的调用   结果如下

    d
     
    派生类的构造函数首先直接调用base的构造函数,而base1,base2,不再去调用,
    (c++未调用不分配内存空间)

  • 相关阅读:
    Firefly 介绍
    9秒社团跨平台开发引擎CrossApp宣布正式开源
    页面置换算法
    Selenium
    C++虚函数、虚继承
    链表题目
    二叉树分类
    求连续子数组的最大和
    拓扑排序
    二叉树题目
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/3474792.html
Copyright © 2011-2022 走看看