C++ 标准中临时绑定到成员生命周期语句的意义是什么?

2024-01-03

In 这个问题 https://stackoverflow.com/q/4721136/57428 user 快乐米塔尔 https://stackoverflow.com/users/317283/happy-mittal引用 C++03 标准第 12.2.5 节:构造函数构造函数初始化程序 (12.6.2) 中引用成员的临时绑定将持续存在,直到构造函数退出.

这怎么可能有用呢?我的意思是,一旦构造函数退出,临时对象就会被销毁,但引用仍然绑定 - 现在绑定到一个已经销毁的对象。

如果外部对象的整个生命周期仍然存在悬空引用,那么如此仔细地指定临时生命周期有什么意义呢?这种行为在什么场景下有用?


将引用成员绑定到死对象是没有用的,但明确绑定到引用时的“正常”临时生命周期扩展在这种情况下不适用是有用的。

它还指定了专门应用于 ctor 初始值设定项的临时生命周期扩展:它扩展到 ctor 的末尾,而不是在 ctor 主体执行之前死亡。除非在“聪明”类中,其全部目的是执行构造函数,否则这没有用,并且正确地避免了这种类型的(滥用)使用。

我不知道后者在现实世界中的例子,但它让我印象深刻,就像默认情况下让析构函数 no throw 破坏了在其生命周期中“聪明”的类以及它们的使用方式。这确实有现实世界的用途came up http://www.justsoftwaresolutions.co.uk/cplusplus/cplusplus-standards-committee-mailing-october-2010.html在关于如何处理 C++0x 中 dtor 的默认语义的讨论中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 标准中临时绑定到成员生命周期语句的意义是什么? 的相关文章

随机推荐