了解临时函数参数的生命周期
使用实例化为函数参数的临时对象时,如下所示:
class MyClass { MyClass(int a); }; myFunction(MyClass(42));
了解它们的破坏行为至关重要。 C 标准提供了对其析构函数时间的深入了解。
临时参数的析构时间
临时对象在其所驻留的完整表达式结束时达到其终点。完整的表达式表示一个独立的表达式,而不是嵌套在另一个表达式中。通常,这对应于指定语句完成的分号(或条件、循环和 switch 语句的右括号)。在给定的示例中,完整的表达式以函数调用结束。
延长临时生命周期
值得注意的是,可以通过将临时变量引用为恒定参考。此策略延长了它们的寿命以匹配引用的寿命:
MyClass getMyClass(); { const MyClass& r = getMyClass(); // full expression ends here ... } // object returned by getMyClass() is destroyed here
与使用 MyClass obj = getMyClass(); 相比,使用此技术可以通过避免不必要的复制构造函数调用来优化性能。不过,其流行率有点低。
以上是临时函数参数在 C 中存在多久?的详细内容。更多信息请关注PHP中文网其他相关文章!