gpt4 book ai didi

c++ - 什么时候构造函数参数和返回值?

转载 作者:行者123 更新时间:2023-11-30 01:54:52 26 4
gpt4 key购买 nike

我一直在阅读有关 RVO 和通过引用与值传递参数的信息。我的想法是:通过引用传递只是传递指针的语法糖,而通过值传递调用类的复制构造函数来制作原始对象的拷贝以供函数使用。 RVO 避免为函数的返回值调用复制构造函数。

我的理解中缺少的是,按值传递的参数和按值返回的对象的确切构造发生的时间。我假设按值传递的对象是在实际调用之前在堆栈上构造的,而返回值是在返回之前复制构造的(在没有 RVO 的情况下)。这是正确的吗?

最佳答案

您的假设非常正确。对于按值传递,在参数所在的位置构造对象通常在调用函数之前的某个时间传递(但是在前一个语句之后),并且在之前被破坏从函数返回,就好像它们是功能。对于通过引用传递,构造对象在堆栈上(或通常构造临时对象的任何地方),并在完整表达式的末尾销毁。返回值,对象由被调用的函数构造,在return 语句(但在局部变量的析构函数之前被调用),并在调用结束时被调用者销毁完整的表达。

关于c++ - 什么时候构造函数参数和返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com