假设我们有两个具有自动存储持续时间的对象:
{
ClassA objA(...);
ClassB objB(...);
// [A] code that uses objA and objB.
// [B] objA is no longer used after this point.
// ... more code ...
} // [C] objA and objB go out of scope.
objA
C++ 标准是否为和指定了构造函数的相对顺序objB
?例如,我们是否可以假设在调用 ' 的构造objA
函数时会看到由 ' 的构造函数引起的任何副作用?objB
- 在 [C] 处,将调用
objA
和的析构函数。objB
这些析构函数是否有类似的排序要求? - 最后,如果活性分析表明
objA
在[B]点之后死亡,C++编译器是否允许为objA
“早期”调用析构函数,即在代码中的[B]和[C]点之间?