问题描述
我在大学的家庭作业中遇到以下问题,任务如下:
I have got the following problem in a homework for university, the task is as follows:
派生班级 MyThickHorizontalLine
来自 MyLine
。一个要求是派生类 MyThickHorizontalLine
的构造函数本身不设置值,而是必须调用基础构造函数。
Derive a class MyThickHorizontalLine
from MyLine
. One requirement is that the constructor of the derived class MyThickHorizontalLine
does not set the values itself, instead its obligated to call the base constructor.
目前在我的cpp文件中看起来像这样:
Which currently looks like this in my cpp file:
MyThickHorizontalLine::MyThickHorizontalLine(int a, int b, int c)
{
MyLine(a, b, c, b);
}
这是我的Base构造函数:
This is my Base constructor:
MyLine::MyLine(int x1, int y1, int x2, int y2)
{
set(x1, y1, x2, y2);
}
MyLine的标题定义:
Header Definition of MyLine:
public:
MyLine(int = 0, int = 0, int = 0, int = 0);
目前的问题是,当我调试这个时,我会进入 MyThickHorizontalLine的构造函数
的价值
b
c
例如 1
2
3
它们被设置那时,当我进一步进入Base构造函数时,我的所有值都为零。
Current problem is that when I debug this I step into the constructor of MyThickHorizontalLine
my values for a
b
c
are for example 1
2
3
they are set there and when I then step further and it gets into the Base constructor all my values are Zero.
我可能在这里遗漏了关于继承的关键部分,但我可以'让我明白。
I am probably missing a crucial part about inheritance here, but I can't get my mind on it.
推荐答案
MyThickHorizontalLine::MyThickHorizontalLine(int a, int b, int c)
{
MyLine(a, b, c, b); // <<<< That's wrong
}
你无法初始化你的基类在构造函数体内。只需使用成员初始化列表来调用基类构造函数:
You cannot initialize your base class inside the constructor's body. Simply use the member initializer list to call the base class constructor:
MyThickHorizontalLine::MyThickHorizontalLine(int a, int b, int c) : MyLine(a, b, c, b) {}
这篇关于派生类中的基本构造函数调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!