我们如何在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

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

来自分类Dev

我们如何在Ruby中做图表示

来自分类Dev

我们如何在iPhone中检测人脸

来自分类Dev

如何在我们的JavaScript中触发Bootstrap

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

我们如何在 Julia 中调用 SharedArray?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

    我们如何在Ruby中做图表示

  3. 3

    我们如何在iPhone中检测人脸

  4. 4

    如何在我们的JavaScript中触发Bootstrap

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

    我们如何在 Julia 中调用 SharedArray?

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档