C++中宿主对象未完全复用或销毁时,子对象能否不再是子对象?
C++宿主对象生存期结束后子对象的状态疑问
当创建包含若干子对象的宿主对象后,若宿主对象的存储被部分复用(未完全销毁或整体复用),这些子对象是否会在某个时刻不再具备子对象的身份?
示例代码:
struct A { int a; int b; }; A o; new (&o.b) float{34.3}; // 由于o的存储被非嵌套对象复用,o的生存期结束,此时a仍是子对象还是成为完整对象?
针对该场景的两个核心疑问:
- C++标准指出对象的属性在创建时确定,但相关段落仅列出了部分属性,是否存在未明确提及的其他属性(比如“是否为子对象”这类属性)?
- 标准中定义子对象的段落明确要求宿主对象必须处于生存期内,这是否意味着宿主对象生存期结束后,原有子对象会自动转变为完整对象?
内容的提问来源于stack exchange,提问作者minex
相关产品推荐
相关产品推荐

