首页  >  文章  >  后端开发  >  C 中的临时对象何时被销毁?

C 中的临时对象何时被销毁?

Barbara Streisand
Barbara Streisand原创
2024-11-12 17:34:02236浏览

When are Temporary Objects Destroyed in C  ?

C 中的临时对象销毁

在 C 中,临时对象是在表达式求值期间按需创建的。这些对象仅存在于表达式的范围内,并在表达式结束后自动销毁。

请考虑以下包含三行代码的示例:

Foo foo{"three"};
Foo{"one"};
std::cout << "two" << '\n';

代码打印“one,”“两个、”和“三”的顺序。此行为是由以下管理临时对象销毁的规则引起的:

表达式求值结束时的销毁

临时对象在完成完整表达式的求值后被销毁,其中他们被创造了。在此示例中,“一”和“三”的临时对象在它们所在的相应行之后被销毁。

规则的例外

虽然临时对象销毁通常遵循此规则,存在特定的例外,如 [class.temporary] p4-p7 中所述:

  1. 数组初始值设定项中默认构造的临时对象的生命周期缩短。
  2. 缩短数组复制期间默认构造函数参数的生命周期。
  3. 通过绑定对临时对象的引用来延长临时对象的生命周期。
  4. 在 for-range-initializer 中延长临时对象的生命周期。

在提供的示例中,这些异常都不适用,因此临时对象在各自的行之后被销毁,从而产生指定的输出。

以上是C 中的临时对象何时被销毁?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn