gpt4 book ai didi

C++ 继承练习

转载 作者:太空狗 更新时间:2023-10-29 20:31:15 25 4
gpt4 key购买 nike

      Class One : public Two
{
public:
One()
{
Three three;
cout << "something";
}
private:
Four _four;
};

我必须显示一个句子:“一二三四五六七”并且第一类必须保持原样。每个类在她的构造函数和析构函数中都不能显示一个以上的单词。

所以...我发现我的基础类是四类。我也做了 constr。 &销毁。在每节课上都试图在他们的 body 上写点东西,但这就是我在输出中得到的:

Class Four Constructor:
Class Three Constructor:
Class Two Constructor:
Class Four Constructor:
Class Four Constructor:
Class Three Constructor:
Class One Constructor:
Class Three Destructor:
Class Four Destructor:

DESTRUCTION:
Class One Destructor:
Class Four Destructor:
Class Two Destructor:
Class Three Destructor:
Class Four Destructor:

我的主要功能:

int main()
{
One one; //<---- it also have to remain
cout << endl;
cout << "DESTRUCTION:\n";
}

我已经阅读了一些关于继承的文章,但仍然不知道如何在 classes constr 中显示单词。 & 析构函数,但不要执行两次或更多次,即使我创建了这些类的对象,就像在第一类中所做的那样。

P.S 抱歉语法错误和其他错误 ;)

最佳答案

我们可以推断的,完全基于 One 的已知定义(以及我对 C++ 构造规则的内存,这可能不是 100% 准确:-),不考虑任何其他可能的类之间的继承关系:

  1. Two()(作为基类构造函数)的输出出现在所有其他构造函数的输出之前,
  2. 接下来是 Four() 的输出(属于派生类的成员),
  3. 然后是 Three() 的输出(One() 构造函数中的本地对象),
  4. 然后是 One() 本身的输出,
  5. 然后是 ~Three() 的输出(作为局部变量,从 One() 返回时超出范围)。

在这里,我们构建了 Shiny 的 One 对象。既然我们对它无能为力,那就摧毁它吧!请注意,所有对象的销毁顺序与其构造顺序完全相反;这是一个基本的 C++ 规则。因此

  1. 首先是 ~Four() 的输出(因为成员在其所有者之前被销毁),
  2. (然后将出现不存在的 ~One() 的输出,因为类的派生部分在其基础部分之前被销毁),
  3. 然后作为基础部分的~Two()的输出最后被销毁。

这为您提供了七种可能的输出数字,因此您在任何地方都不需要额外的基类或成员。只需将正确的数字放入正确的构造函数和析构函数的输出中即可:-)

关于C++ 继承练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4616037/

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