为什么C++强制成员变量的初始化按照声明的顺序
c#
我知道在 C++ 中,类头中成员的声明定义了初始化顺序。你能告诉我为什么 C++ 选择这种设计吗?强制初始化顺序而不是遵循初始化列表有什么好处吗?
回答
构造函数可以重载,而析构函数则不能。如果数据成员可以为不同的构造函数以不同的顺序初始化,那么析构函数不能保证以它们构造的相反顺序对数据成员执行销毁(对于由不同构造函数构造的对象)。
c#
我知道在 C++ 中,类头中成员的声明定义了初始化顺序。你能告诉我为什么 C++ 选择这种设计吗?强制初始化顺序而不是遵循初始化列表有什么好处吗?
构造函数可以重载,而析构函数则不能。如果数据成员可以为不同的构造函数以不同的顺序初始化,那么析构函数不能保证以它们构造的相反顺序对数据成员执行销毁(对于由不同构造函数构造的对象)。