相关疑难解决方法(0)

42
推荐指数
3
解决办法
1万
查看次数

C++构造函数和析构函数顺序

我正在尝试一个关于基类和成员构造和破坏的代码,我对构造函数和析构函数的一些顺序感到困惑,这段代码的输出是:

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)

c++ constructor destructor

10
推荐指数
1
解决办法
2253
查看次数

标签 统计

c++ ×2

constructor ×1

destructor ×1

virtual-destructor ×1