为什么析构函数以相反的顺序调用?

why the desturctor called in reverse order?

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

#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 ; 
}

正如 C++ 标准中定义的那样:销毁事物的顺序,如成员变量、基类、作用域中的局部对象,与创建顺序相反。

Base已经被摧毁不能再使用时,你是否希望你的Derived的dtor body变成运行?