gpt4 book ai didi

c++ - 派生类中的基构造函数调用

转载 作者:行者123 更新时间:2023-11-30 02:34:04 25 4
gpt4 key购买 nike

我在大学作业中遇到了以下问题,任务如下:

MyLine 派生一个类 MyThickHorizo​​ntalLine。一个要求是派生类 MyThickHorizo​​ntalLine 的构造函数本身不设置值,而是必须调用基类构造函数。

目前在我的 cpp 文件中看起来像这样:

MyThickHorizontalLine::MyThickHorizontalLine(int a, int b, int c)
{
MyLine(a, b, c, b);
}

这是我的基础构造函数:

MyLine::MyLine(int x1, int y1, int x2, int y2)
{
set(x1, y1, x2, y2);
}

MyLine 的标题定义:

public:
MyLine(int = 0, int = 0, int = 0, int = 0);

当前的问题是,当我调试它时,我进入了 MyThickHorizo​​ntalLine 的构造函数,我的值是 a b c 例如 1 2 3 它们被设置在那里,然后当我进一步进入 Base 构造函数时,我的所有值都是零。

我可能在这里遗漏了关于继承的关键部分,但我无法理解它。

最佳答案

MyThickHorizontalLine::MyThickHorizontalLine(int a, int b, int c)
{
MyLine(a, b, c, b); // <<<< That's wrong
}

您不能在构造函数体内初始化基类。只需使用成员初始化列表来调用基类构造函数:

MyThickHorizontalLine::MyThickHorizontalLine(int a, int b, int c) : MyLine(a, b, c, b) {}

关于c++ - 派生类中的基构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34866676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com