【发布时间】:2016-08-27 18:50:07
【问题描述】:
如果某个函数 f 带有参数 p_1, ..., p_n 类型分别为 T_1, ..., T_n 被调用参数 a_1, ..., @987654329 @ 及其主体抛出异常,完成或返回,参数以什么顺序被销毁,为什么?如果可能,请提供对标准的参考。
编辑:我实际上想问一下函数“参数”,但作为 T.C.哥伦布设法消除了我的困惑,我将把这个问题留在论点上,并问a new separate question about the parameters。请参阅有关此问题的 cmets 以了解区别。
【问题讨论】:
-
我不知道顺序,但我猜第二个问题的答案是“因为标准是这样说的”......
-
我认为没有预定义的顺序(与调用具有多个参数的函数时相同),但我很高兴看到引用标准的答案。好问题,+1。
-
wg21.link/cwg1880。这似乎未指定。
-
@Columbo 不是。我看到人们一直在混合它们。而且因为参数的生命周期不一定与函数的退出有关 - 例如
void foo(std::string); std::string s; foo(s); -
@Columbo 我想我从来没有遇到过对这种区别如此迂腐的人。我认识的大多数人都交替使用参数和参数
main有argv和argc。不是paramv和paramc。
标签: c++ function arguments language-lawyer object-lifetime