不是完整表达式的语句
Statement that isn't a full-expression
经常听说在 C++ 中,临时对象在 完整表达式 的末尾被解构。 full-expression 被定义为不是某个其他表达式的子表达式的表达式。对我来说,这听起来与 声明 的概念非常相似。
所以我的问题是:如果我在 完整表达式 后附加一个分号,它是否总是 语句 ?是否可以通过在末尾取一些带有分号的 语句 并删除该分号来得到每个 完整表达式 ?我可以假设每个临时文件都将一直存在到其 语句 结束吗?
这是一个比包含的临时文件的生命周期更长的语句:
if (T() == T())
foo();
条件中的表达式创建的两个临时对象在完整表达式的末尾被销毁,并且在语句 (foo();
) 执行。
请注意,对于任何表达式 e
,e
;
是一个语句(即 表达式语句 ,参见 [stmt.expr]).
经常听说在 C++ 中,临时对象在 完整表达式 的末尾被解构。 full-expression 被定义为不是某个其他表达式的子表达式的表达式。对我来说,这听起来与 声明 的概念非常相似。
所以我的问题是:如果我在 完整表达式 后附加一个分号,它是否总是 语句 ?是否可以通过在末尾取一些带有分号的 语句 并删除该分号来得到每个 完整表达式 ?我可以假设每个临时文件都将一直存在到其 语句 结束吗?
这是一个比包含的临时文件的生命周期更长的语句:
if (T() == T())
foo();
条件中的表达式创建的两个临时对象在完整表达式的末尾被销毁,并且在语句 (foo();
) 执行。
请注意,对于任何表达式 e
,e
;
是一个语句(即 表达式语句 ,参见 [stmt.expr]).