为什么除垢器按相反顺序调用?

时间:2018-12-09 07:46:23

标签: c++ constructor destructor

在继承中,为什么析构函数以相反的顺序作为构造函数调用?

#include "stdafx.h"
#include <iostream>

class Base {
int value ; 
public : 
Base()value{0}{std::cout << "Base Constructor called" << std::endl; }
~Base(){std::cout << "Base Destructor called" << std::endl; }
};

class Derived : public Base {
int d_value ; 
public : 
Derived()d_value{0}{std::cout << "Derived Constructor called" << std::endl; }
~Derived(){std::cout << "Derived Destructor called" << std::endl; }
};

int main() {
Derived d ; 
return 0 ; 
}
  • //输出
  • 基本构造函数称为
  • 派生的构造函数称为
  • 派生的析构函数,称为
  • 基本析构函数

1 个答案:

答案 0 :(得分:0)

这是C ++标准中定义的:销毁事物的顺序(例如成员变量,基数,作用域中的局部对象)与创建顺序相反。

您是否希望在Derived被销毁并且无法再使用时运行您的Base的dtor机体?