我们如何在C ++中从子类中调用父级重载的构造函数?

穆罕默德·欧凡·沙扎德(Muhammad Irfan Shahzad)

如果我们有一个父母班和两个孩子班。child1从父级继承,child2从child1继承。在child2类中,我们如何调用child1,而parent在child2中重载了构造函数。

class parents{
        int x;
        public:
        parents(int a)
        {
           x=a;
        }
        };
class child1 : public parents{
        int y;
        pulic:
        child1(int b)
        {
          y=b;
        }
        };
class child2 :public child1{
          int z;
          public:
          child2(int c)
          {
              z=c;
            // how we call above overloaded constructor in this overloaded cnstructor 
          }
          }; 
阿比奥罗拉

您可以在子类的构造函数成员初始化器列表执行此操作因为parent不是的直接基地child2您必须为直接基类(child提供一个构造函数,child2并且可以使用它的构造child1函数,您可以初始化基类parent

因此,您将必须在整个层次结构的基类中传播初始化,但可以直接parent在的成员初始化器列表中解决“非常基础”的构造函数(child2

尝试这个:

class parents {
    int x;
public:
    parents(int a)
    {
      x = a;
    }
};
class child1: public parents {
    int y;
public:
    child1(int b): parents(b)
    {
      y = b;
    }
};

class child2: public child1{
    int z;
public:
    child2(int c): child1(c)
    {
      z = c;
    }
};

要么

您可以使用virutal继承。虚拟基础是上述声明的例外。

它们总是在叶类中初始化,否则可能会为同一基数获得多个构造函数调用。因此,如果您将基础虚拟化,不仅child2必须在中进行初始化,还必须。

此外,实际上您将被强制在任何“孙子”类中调用它,因此您不会偶然忘记它:

class parents {
    int x;
public:
    parents(int a)
    {
      x = a;
    }
};
class child1: public virtual parents {
    int y;
public:
    child1(int b): parents(b)
    {
      y = b;
    }
};

class child2: public virtual child1{
    int z;
public:
    child2(int c): child1(0), parents(1)
    {
      z = c;
    }
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 C++ 中从子类调用重载的父方法

来自分类Dev

如何在Javascript中从子级调用父级函数

来自分类Dev

如何在子类构造函数中调用父构造函数?

来自分类Dev

Django / Python:如何从子类中的父类调用函数?

来自分类Dev

我们如何在GDB中完成函数调用?

来自分类Dev

如何在Flutter中从子类函数调用父类函数

来自分类Dev

我们如何在Java中调用多个线程?

来自分类Dev

我们如何在Java中调用多个线程?

来自分类Dev

我们如何在 Julia 中调用 SharedArray?

来自分类Dev

Java如何在调用父构造函数之前覆盖子类中的父类属性

来自分类Dev

如何在 Django restframework 中运行我们的函数

来自分类Dev

我们如何在迁移学习中为我们的培训设置标签?

来自分类Dev

我们如何在 c 中检查内联汇编中的寄存器值?

来自分类Dev

我们如何在源代码中检测所有指针比较?C ++

来自分类Dev

我们如何在C#Windows应用程序中访问动态创建的控件?

来自分类Dev

我们如何在源代码中检测所有指针比较?C ++

来自分类Dev

我们如何在Liferay中创建后退按钮

来自分类Dev

我们如何在Ruby中做图表示

来自分类Dev

我们如何在sphinx文档中嵌入图像?

来自分类Dev

我们如何在VSCode中编辑Rust文件?

来自分类Dev

我们如何在iPhone中检测人脸

来自分类Dev

我们如何在Dart中删除对象?

来自分类Dev

如何在我们的JavaScript中触发Bootstrap

来自分类Dev

我们如何在消息中抛出异常?

来自分类Dev

我们如何在WebAPI中隐藏属性?

来自分类Dev

我们如何在Java中实现抽象?

来自分类Dev

如何在R中堆叠我们的数据

来自分类Dev

我们如何在角度8中添加链接?

来自分类Dev

我们如何在SwiftUI中访问List的DisclosureGroup?

Related 相关文章

  1. 1

    在 C++ 中从子类调用重载的父方法

  2. 2

    如何在Javascript中从子级调用父级函数

  3. 3

    如何在子类构造函数中调用父构造函数?

  4. 4

    Django / Python:如何从子类中的父类调用函数?

  5. 5

    我们如何在GDB中完成函数调用?

  6. 6

    如何在Flutter中从子类函数调用父类函数

  7. 7

    我们如何在Java中调用多个线程?

  8. 8

    我们如何在Java中调用多个线程?

  9. 9

    我们如何在 Julia 中调用 SharedArray?

  10. 10

    Java如何在调用父构造函数之前覆盖子类中的父类属性

  11. 11

    如何在 Django restframework 中运行我们的函数

  12. 12

    我们如何在迁移学习中为我们的培训设置标签?

  13. 13

    我们如何在 c 中检查内联汇编中的寄存器值?

  14. 14

    我们如何在源代码中检测所有指针比较?C ++

  15. 15

    我们如何在C#Windows应用程序中访问动态创建的控件?

  16. 16

    我们如何在源代码中检测所有指针比较?C ++

  17. 17

    我们如何在Liferay中创建后退按钮

  18. 18

    我们如何在Ruby中做图表示

  19. 19

    我们如何在sphinx文档中嵌入图像?

  20. 20

    我们如何在VSCode中编辑Rust文件?

  21. 21

    我们如何在iPhone中检测人脸

  22. 22

    我们如何在Dart中删除对象?

  23. 23

    如何在我们的JavaScript中触发Bootstrap

  24. 24

    我们如何在消息中抛出异常?

  25. 25

    我们如何在WebAPI中隐藏属性?

  26. 26

    我们如何在Java中实现抽象?

  27. 27

    如何在R中堆叠我们的数据

  28. 28

    我们如何在角度8中添加链接?

  29. 29

    我们如何在SwiftUI中访问List的DisclosureGroup?

热门标签

归档