首页 文章

为什么命运者以相反的顺序打电话? [重复]

提问于
浏览
0

这个问题在这里已有答案:

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

#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

    这就像它在C标准中定义的那样:破坏事物的顺序,如成员变量,基础,范围中的本地对象,是创建顺序的反转 .

    Base 已被销毁并且不能再使用时,您是否希望运行 Derived 的dtor体?

相关问题