gpt4 book ai didi

c++ - 关于派生类如何工作的问题

转载 作者:行者123 更新时间:2023-12-02 10:11:39 25 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

1年前关闭。




Improve this question




这是我期末考试的模拟测试。我必须能够解释这些代码是如何工作的。但老实说,我不太了解这段代码。
你们能解释一下我这是如何工作的吗?如果我能完全理解它,我会很高兴为我的决赛做好准备。谢谢你。

   #include <iostream>
using namespace std;
class Wind {
int category;
public:
Wind(int cat = 3) {
category = cat;
cout << "1." << cat << endl;
}
virtual void increase(int amount) {
category += amount;
cout << "A. " << category << endl;
}
void operator++() {
++category;
cout << "B. " << category << endl;
}
virtual ~Wind() {
cout << "C. " << category << endl;
}
};
class Tornado : public Wind {
double velocity;
public:
Tornado(int cat, double vel) : Wind(cat) {
velocity = vel;
cout << "2. " << vel << endl;
}
virtual void increase(int value) {
velocity += value;
cout << "X. " << velocity << endl;
}
void operator++() {
Wind::operator++();
velocity += 20;
cout << "Y. " << endl;
}
~Tornado() {
cout << "Z. " << velocity << endl;
}
};
int main() {
Wind* wind_array[2];
wind_array[0] = new Tornado(7, 66.5);
wind_array[1] = new Wind(5);
for (int i = 0; i < 2; i++) {
wind_array[i]->increase(5);
++(*wind_array[i]);
}
for (int i = 0; i < 2; i++)
delete wind_array[i];
return 0;
}
这是输出。
1.7
2. 66.5
1.5
X. 71.5
B. 8
A. 10
B. 11
Z. 71.5
C. 8
C. 11

最佳答案

请阅读有关虚函数和派生类的内容,之后会有意义。
Derived classes
Virtual functions cpp
1.7 - 构造函数 风(风是 Tornado 的基类,所以这个构造函数首先执行)
2. 66.5 - 构造函数 Tornado
1.5 - 构造函数
X. 71.5 - 增加 tornado (虚函数所以不执行基类增加)
B. 8 - ++ 风(不是虚函数 - 所以 Tornado 的++ 不被执行)
A. 10 - 增加
B. 11 - ++
Z. 71.5 - 析构函数 Tornado
C. 8 - 析构函数 风(风是基类)
C. 11 - 析构函数

关于c++ - 关于派生类如何工作的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63322625/

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