为什么C++强制成员变量的初始化按照声明的顺序

Why C++ forces initialization of member variables to be in the order of the declaration

我知道在 C++ 中 class header 中的成员声明定义了初始化顺序。你能告诉我为什么 C++ 选择这种设计吗?强制初始化顺序而不是遵循初始化列表有什么好处吗?

构造函数可以重载,而析构函数不能。如果可以为不同的构造函数以不同的顺序初始化数据成员,那么析构函数不能保证以与构造函数相反的顺序对数据成员执行销毁(对于由不同的构造函数构造的对象)。