gpt4 book ai didi

c++ - C++中调用析构函数和构造函数的顺序是什么

转载 作者:IT老高 更新时间:2023-10-28 13:58:56 24 4
gpt4 key购买 nike

C++ 中调用析构函数和构造函数的顺序是什么?使用一些基类和派生类的例子

最佳答案

顺序是:

  1. 基础构造函数
  2. 派生构造函数
  3. 派生的析构函数
  4. 基础析构函数

示例:

class B
{
public:
B()
{
cout<<"Construct B"<<endl;
}

virtual ~B()
{
cout<<"Destruct B"<<endl;
}
};

class D : public B
{
public:
D()
{
cout<<"Construct D"<<endl;
}

virtual ~D()
{
cout<<"Destruct D"<<endl;
}
};



int main(int argc, char **argv)
{
D d;
return 0;
}

示例输出:

Construct B

Construct D

Destruct D

Destruct B

多层继承就像一个堆栈:

如果您考虑将一个项目压入堆栈作为构造,而将其取出作为破坏,那么您可以将多个级别的继承视为堆栈。

这适用于任意数量的级别。

示例 D2 派生自 D 派生自 B。

将 B 压入堆栈,将 D 压入堆栈,将 D2 压入堆栈。所以施工顺序是B、D、D2。然后找出破坏顺序开始弹出。 D2、D、B

更复杂的例子:

更复杂的例子请看@JaredPar提供的链接

关于c++ - C++中调用析构函数和构造函数的顺序是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654428/

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