依赖于本地对象在c ++中以相反的构造顺序被破坏是不好的做法

Yan*_*Chi 2 c++

依赖于本地对象在C++中以相反的构造顺序进行破坏是不好的做法,还是应该在析构函数中以相反的顺序显式删除它们以确保它遵循该顺序?


是的,你们是对的,这个问题本身就很糟糕.

所以基本上这就是场景:

  class A {
  private:
    unique_ptr<Something> firstP;
    unique_ptr<Something> secondP;
  };
Run Code Online (Sandbox Code Playgroud)

在某些时候,firstP和secondP都会得到他们需要拥有的东西.我需要的是确保当A被破坏时,firstP将比第二个P晚被破坏,所以Something firstP拥有的寿命比SecondP拥有的东西更长.

显然,如果我可以依赖secondP将比firstP早出现的事实,那么我不需要在这里做任何事情.但是如果我不能依赖它,我需要在A的析构函数中按照我想要的顺序显式重置它们.

是的,设计可能比这更好..

wil*_*ilx 6

自动变量保证了反向破坏顺序.同样保证类成员变量的销毁顺序.使用它对您有利.

  • @BasileStarynkevitch:*"不,我们不想想.我们想知道."*纸浆小说不谈,我认为你错了. (2认同)