可能重复:
何时使用虚拟析构函数?
您的C++对象的析构函数何时应该virtual?
我正在尝试一个关于基类和成员构造和破坏的代码,我对构造函数和析构函数的一些顺序感到困惑,这段代码的输出是:
Base1 constructor
Member1 constructor
Member2 constructor
Derived1 constructor
Member3 constructor
Member4 constructor
Derived2 constructor
Derived2 destructor
Member4 destructor
Member3 destructor
Derived1 destructor
Member2 destructor
Member1 destructor
Base1 destructor
Run Code Online (Sandbox Code Playgroud)
看到前四行,但我应该下令
Base1 constructor
Derived1 constructor
Member1 constructor
Member2 constructor
Run Code Online (Sandbox Code Playgroud)
谁能给我一些解释?
#include "stdafx.h"
#include <fstream>
using namespace std;
ofstream out("order.out");
#define CLASS(ID) class ID { \
public: \
ID(int) { out << #ID " constructor\n"; } \
~ID() { out << #ID " destructor\n"; } \
};
CLASS(Base1);
CLASS(Member1);
CLASS(Member2);
CLASS(Member3);
CLASS(Member4); …Run Code Online (Sandbox Code Playgroud)