【发布时间】:2018-12-06 05:33:42
【问题描述】:
我不明白:
3.8/1 “T 类型对象的生命周期在以下情况下结束: — 如果 T 是具有非平凡析构函数 (12.4) 的类类型,则析构函数调用 开始,或者——对象占用的存储空间被重用或者 释放。”
如果生命周期在析构函数开始之前就结束了,这是否意味着访问析构函数中的成员是未定义的行为?
我也看到了这句话:
12.7 “对于具有非平凡析构函数的对象,在析构函数之后引用该对象的任何非静态成员或基类 完成执行会导致未定义的行为。”
但它并不清楚在析构函数期间允许什么。
【问题讨论】:
-
(出于某种原因,我认为这是重复的,但我找不到并且忘记了答案)
-
12.7 并没有谈论你可以在析构函数中做什么,而是谈论在析构函数执行结束后会发生什么。
-
您应该将此问题提交给 C++ 委员会。
标签: c++ destructor language-lawyer object-lifetime