gpt4 book ai didi

c++ - 没有调用复制构造函数

转载 作者:太空狗 更新时间:2023-10-29 23:41:55 25 4
gpt4 key购买 nike

考虑一下:

#include <iostream>

struct A{
A(){
std::cout << "Create empty A" << std::endl;
}

A(const A& a){
// Why is this never called??
std::cout << "Never called" << std::endl;
}
};

A genA() {
A a;
return a;
}

int main(int argc, const char *argv[])
{
A a(genA()); // Expected to call copy constructor
return 0;
}

为什么没有调用拷贝构造函数?

想要保证每次复制A时屏幕上都打印“Never called”怎么办

最佳答案

这称为 Return value optimization .
编译器可以优化您的代码,以便它直接在它也被复制的位置构建对象。因此没有理由使用复制构造函数。

注意:标准明确允许这样做。

关于c++ - 没有调用复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7173632/

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