gpt4 book ai didi

c++ - 为什么不能为此 C++ 代码示例打印两次 deconstruct?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:59 25 4
gpt4 key购买 nike

using namespace std;

Object returnObject(){
Object o;
return o; //place A
}

int main() {
Object CopiedO=returnObject();
return 0; //Place B
}

对象定义是:

Object::Object() {
cout<<"Object::Object"<<endl;
}

Object::~Object() {
cout<<"Object::~Object"<<endl;
}

Object::Object(const Object& object) {
cout<<"Object::CopyObject"<<endl;
}

结果是:

/*Object::Object
Object::~Object*/

据我了解,o和CopiedO in都会被解构,但为什么只打印一次Object::~Object?

我认为没有内联,复制的 o 是 o 的拷贝。但它不能打印 Object::CopyObject

最佳答案

编译器正在删除拷贝。因为它知道从函数返回的对象只有初始化 CopiedO 的目的,所以它将两个对象合并为一个,您将只看到一个构造,一个破坏,没有复制构造。

关于c++ - 为什么不能为此 C++ 代码示例打印两次 deconstruct?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21036234/

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