gpt4 book ai didi

c++ - 在没有复制构造函数的情况下传递对象的参数?

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:38 26 4
gpt4 key购买 nike

我正在研究 C++11 中的移动语义,并找到了类似以下内容的部分:

SomeClass bar = createSomeClass();     //creates some object of SomeClass
foo(bar);
foo(createSomeClass());

我知道在第一个 foo 中,编译器将调用 SomeClass 的复制构造函数,而在第二个 foo 中,编译器将调用一个重载移动构造函数,因为 createSomeClass() 返回一个 R 值。

如果我根本没有声明复制构造函数怎么办?那么编译器实际上如何知道如何复制这些对象?

最佳答案

除非类声明复制构造函数、删除复制构造函数或声明移动操作,否则将自动提供默认复制构造函数(执行成员复制)。如果存在用户声明的析构函数或复制赋值运算符,仍将自动提供默认复制构造函数,但这已被弃用。

除非类声明复制赋值运算符、删除复制赋值运算符或声明移动操作,否则将自动提供默认复制赋值运算符(执行成员复制)。如果存在用户声明的析构函数或复制构造函数,仍将自动提供默认复制构造函数,但这已被弃用。

仅当类未声明任何复制操作、移动操作或析构函数时,才会自动提供默认的移动构造函数和移动赋值运算符。

关于c++ - 在没有复制构造函数的情况下传递对象的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44814860/

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