Jam*_*lis 12
这在很大程度上是为了保持一致性.当按顺序创建多个对象时,它们总是以相反的顺序销毁.例如,请考虑以下带有自动变量的示例:
{
A a;
B b(a);
} // b.~B() is called, then
// a.~A() is called
Run Code Online (Sandbox Code Playgroud)
在这里,b用途a.通过保证对象以其构造的相反顺序被销毁,C++使对象生命周期管理变得更加容易.
在类中,您可以在初始化另一个数据成员时将引用传递给一个数据成员.确保以相反的顺序销毁对象,您将获得与自动变量相同的行为:
struct S
{
A a;
B b;
S() : a(), b(a) { }
};
Run Code Online (Sandbox Code Playgroud)
请注意,让数据成员互相引用通常不是一个好主意,但它既可能也可能偶尔有用.
我想也许你误会了.这不是成员应该按此顺序销毁,而是指定成员.
在极少数情况下,了解项目被销毁的顺序非常重要.
无论如何,这就是物体被摧毁的顺序,你无能为力,但知道它正在发生的事情.