gpt4 book ai didi

C++ 我可以期望所有编译器都不会破坏返回的拷贝吗?

转载 作者:行者123 更新时间:2023-11-30 00:38:40 26 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

class ClassA {
int k;
public:
ClassA(int i) : k(i)
{
}

~ClassA()
{
cout << "A destroyed" << " k=" << k << endl;
}

ClassA copyAndModify()
{
ClassA a(k*2);
return a;
}

void taunt()
{
cout << k << endl;
}
};

int main (int argc, char * const argv[]) {
ClassA original(1)
ClassA modified = original.copyAndModify();
modified.taunt();
return 0;
}

我以为对象“a”(在方法 copyAndModify 内)在方法返回时被解构,但事实并非如此。这是否意味着所有在方法内创建的对象都不会被解构?这对所有编译器都是正确的吗?

最佳答案

您遇到了 Return Value Optimization .不,它不会在所有编译器上都一样。

关于C++ 我可以期望所有编译器都不会破坏返回的拷贝吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10254631/

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