在继承中,为什么析构函数以相反的顺序作为构造函数调用?
#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 ;
}
答案 0 :(得分:0)
这是C ++标准中定义的:销毁事物的顺序(例如成员变量,基数,作用域中的局部对象)与创建顺序相反。
您是否希望在Derived
被销毁并且无法再使用时运行您的Base
的dtor机体?