C 中的临时对象销毁
在 C 中,临时对象是在表达式求值期间按需创建的。这些对象仅存在于表达式的范围内,并在表达式结束后自动销毁。
请考虑以下包含三行代码的示例:
Foo foo{"three"}; Foo{"one"}; std::cout << "two" << '\n';
代码打印“one,”“两个、”和“三”的顺序。此行为是由以下管理临时对象销毁的规则引起的:
表达式求值结束时的销毁
临时对象在完成完整表达式的求值后被销毁,其中他们被创造了。在此示例中,“一”和“三”的临时对象在它们所在的相应行之后被销毁。
规则的例外
虽然临时对象销毁通常遵循此规则,存在特定的例外,如 [class.temporary] p4-p7 中所述:
在提供的示例中,这些异常都不适用,因此临时对象在各自的行之后被销毁,从而产生指定的输出。
以上是C 中的临时对象何时被销毁?的详细内容。更多信息请关注PHP中文网其他相关文章!