那我要是在对象的ctor里边干点与执行顺序相关的事,岂不是分分钟出错?
然而事实上这么做根本不会出错。这是得基本遵守的规则。
反正要触发nrvo,最好把返回对象定义在第一行,十分稳妥。
上面allego的代码,传参都是编译期常量,编译期一优化,分支就变得编译器可预测了。比如把true false改成键盘输入,if里边的nrvo我觉得是触发不了的。
【 在 here080 @ [CPlusPlus] 的大作中提到: 】
:
: 你代码写的顺序不一定是程序执行的顺序。
: 变量是否写在第一行根本就没关系。
: 只有很老的C编译器才会有这个。
: 【 在 hyperLee (老李) 的大作中提到: 】
--
FROM 120.244.224.*