copy-constructor相关内容

候选构造函数(隐式复制构造函数)无效:第一个参数需要一个l值

问题 我有一个Deck类,它是52个Card对象的容器。Deck是从另一个名为CardCollection的类派生的(因为我想在其他地方使用类似的纸牌组,但不是全部纸牌)。我的问题是我可以使用 创建Deck对象 Deck deck(); 但当我使用 Deck deck = Deck(); Clang-tidy(Clion)抱怨Candidate constructor (the ..
发布时间:2022-08-30 23:21:45 C/C++开发

C++为堆栈类创建复制构造函数

我定义了一个堆栈类,其中包含用于将值推入和弹出堆栈的方法。 在测试程序文件(如下所示)中,在运行该文件后,发生了一次故障&程序崩溃。我知道这是由于函数f造成的,该函数在两个指针指向内存中的同一位置时会产生错误。如果我在调用函数时注释掉f(S)行,弹出和推入函数就能正常工作,输出也是正确的。 若要修复此错误,我被要求为此类创建复制构造函数以修复上述问题。 我对此不是很熟悉,因此如果有任 ..
发布时间:2022-07-03 21:18:30 C/C++开发

在单例类上调用了复制构造函数

我有以下问题。我有一个带有getInstance成员函数的单例函数,该函数返回一个实例。我在代码中的某个地方调用它,出于某种原因,VC试图调用复制构造函数。这是为什么呢?我如何修复此问题? 标题: class FileSystemEntryCollection { public: static FileSystemEntryCollection &getInstance(); ..
发布时间:2022-02-27 09:58:16 C/C++开发

什么是复制和交换成语?

这个成语是什么,应该在什么时候使用?它解决了哪些问题?使用 C++11 时习语会发生变化吗? 虽然在很多地方都提到过,但我们没有任何单数的“它是什么"问题和答案,所以在这里.以下是之前提到的部分地点列表: 你最喜欢的 C++ 编码风格成语是什么:复制交换 复制C++ 中的构造函数和 = 运算符重载:通用函数是否可行? 什么是复制省略和它如何优化复制和交换习语 C++:动态分配对象 ..

“可复制构造"C++ stl 容器元素的要求

关于C++ stl容器元素的要求,标准规定:元素类型应为CopyConstructible,并有CopyConstructible要求表.同样通过各种书籍(Josuttis 等),生成的副本应该与源“等效". 我想我需要澄清一下.究竟什么是“等同于"?我也对“CopyConstructible"和“深/浅拷贝"之间的关系有点困惑.一般来说,拷贝构造函数要么是浅拷贝,要么是深拷贝.那么哪个适用 ..
发布时间:2022-01-24 20:48:49 C/C++开发

我可以将指针传递给超类,但创建子类的副本吗?

我有一个函数,它接受一个指向超类的指针并对其执行操作.但是,在某些时候,该函数必须对输入的对象进行深层复制.有什么办法可以进行这样的复制吗? 我想到将函数设为模板函数并简单地让用户传递类型,但我希望 C++ 提供更优雅的解决方案. 解决方案 SpaceCowboy 提出了惯用的 clone 方法,但忽略了 3 个关键细节: 超级类{上市:virtual Super* clone() ..
发布时间:2022-01-24 16:25:23 C/C++开发

gdb 可以中断隐式类方法吗?

编译器会生成一些类方法,如复制构造函数、析构函数等.是否可以在这些方法上设置 gdb 中断,例如,观察对象被复制或销毁的位置? 解决方案 gdb 可以中断隐式类方法吗? 是的,当然可以. (gdb) break MyClass::MyClass(const MyClass &)//复制时中断(gdb) break MyClass::~MyClass()//对象销毁时中断 就这 ..
发布时间:2022-01-20 20:46:19 C/C++开发

c ++复制构造函数签名:有关系吗

我当前的实现使用大量具有这种语法的复制构造函数 MyClass::Myclass(Myclass* my_class) 它真的(功能上)不同于 MyClass::MyClass(const MyClass& my_class) 为什么? 有人建议我第一个解决方案不是真正的复制构造函数.然而,做出改变意味着相当多的重构. 谢谢!!! 解决方案 区别在于第一 ..
发布时间:2022-01-20 18:22:45 C/C++开发

C++ vector::push_back 使用默认复制构造函数

我有一个类(Uniform),它有一个带有 2 个参数的构造函数和一个默认的复制构造函数(它只包含 int、float、一个 std::vector 和一个 std::map).我创建了一个 std::vector制服 我想用 uniforms.push_back() 线.我使用这段代码来做到这一点(第二行只是在这里测试复制构造函数,因为它目前失败了) 统一 uni(uniform_na ..
发布时间:2022-01-20 18:04:26 C/C++开发

我定义了一个非拷贝构造函数;复制构造函数是否仍会被隐式定义?

是否可以为已经用户定义的构造函数的类调用(隐式)默认 复制构造函数 但那不是复制构造函数? 如果可能的话,假设我们为类显式定义了复制构造函数,现在可以调用(隐式)默认构造函数吗? 解决方案 首先,让我们澄清一下我们的词汇.默认构造函数是可以不带任何参数调用的构造函数.复印件constructor 是一个可以用单个参数调用的构造函数同类型.鉴于此,“默认复制构造函数"将是带有类似签名的 ..
发布时间:2022-01-20 17:59:30 C/C++开发

为什么复制构造函数应该在 C++ 中通过引用来接受它的参数?

为什么复制构造函数的参数必须通过引用传递? 解决方案 因为如果不是按引用,就是按值.为此,您制作一个副本,并为此调用复制构造函数.但要做到这一点,我们需要创建一个新值,所以我们调用复制构造函数,等等...... (您将有无限递归,因为“要复制,您需要复制".) ..
发布时间:2022-01-20 17:34:23 C/C++开发

基类 'QAbstractListModel' 具有私有复制构造函数

我有一个 QT QML 项目.(还很小) 我首先在我的 UScenario 模型上绑定一个列表视图,通过子类化 QAbstractListModel 并且它工作得很好. 现在,每个 UScenario 都有一个 UTask 列表,其中也有一个 UCondition 列表(所以,Utask 也是 QAbstractListModel 的子类.但是随后,QT Creator 给了我一个错误 ..

复制初始化的奇怪行为,不调用复制构造函数!

我正在阅读直接初始化和复制初始化之间的区别(第 8.5/12 节): T x(a);//直接初始化T y = a;//复制初始化 我从阅读 copy-initialization 是它需要 可及性非显式复制构造函数,否则程序将无法编译.我通过编写以下代码验证了它: 结构 A{诠释我;A(int i) : i(i) { std::cout ..

为链表创建复制构造函数

这是作业 我正在为我的 C++ 类实现一个链表类,而复制构造函数让我很困惑. 链表由称为 Elems 的结构组成: struct 元素{国际优先;数据信息;元素 * 下一个;};元素 * 头; info 是一个单独的自定义类,存储在 Elem 中. 复制构造函数的签名是: linkedList::linkedList(constlinkedList &v) 我遇到的问题主 ..
发布时间:2022-01-01 18:08:37 C/C++开发

从函数返回对象时调用 C++ 中的复制构造函数?

我知道在三个实例上调用了复制构造函数 实例化一个对象并使用另一个对象的值对其进行初始化时. 按值传递对象时. 3.当一个对象按值从函数返回时. 我对 3 号有疑问如果在返回对象值时调用复制构造函数,那么如果在函数中本地声明对象,是否应该会产生问题. 我的意思是拷贝构造函数是一个深拷贝,并以对象的引用作为参数 解决方案 它的调用正是为了避免出现问题.从本地定义的对象 ..
发布时间:2021-12-30 15:29:56 C/C++开发

为什么复制构造函数不“链接"?比如默认构造函数和析构函数?

为什么不链接复制构造函数(如默认构造函数或 dtors),以便在调用派生类的复制构造函数之前调用基类的复制构造函数?对于默认构造函数和析构函数,它们分别在从基到派生和派生到基的链中调用.为什么复制构造函数不是这种情况?例如,这段代码: class Base {上市:基础():基础数据(兰特()){}Base(const Base& src) : basedata(src.basedata) {c ..
发布时间:2021-12-30 15:26:07 C/C++开发

在 C++ 中禁止复制构造函数的最可靠方法是什么?

有时需要在 C++ 类中禁止复制构造函数,以便类变为“不可复制".当然,operator= 应该同时禁止. 到目前为止,我已经看到了两种方法来做到这一点.方法一是将方法声明为私有,不实现: class 类 {//有用的东西,然后私人的:Class(const Class&);//未在任何地方实现void operator=( const Class& );//未在任何地方实现}; 方法 ..
发布时间:2021-12-30 15:15:53 C/C++开发

什么是 C++ 中的转换构造函数?它有什么用?

我听说 C++ 有一种叫做“转换构造函数"或“转换构造函数"的东西.这些是什么,它们有什么用?我看到它提到了有关此代码的内容: class MyClass{上市:国际a, b;MyClass( int i ) {}}int main(){我的类 M = 1 ;} 解决方案 转换构造函数的定义在 C++03 和 C++11 之间是不同的.在这两种情况下,它都必须是非explicit 构造函数( ..
发布时间:2021-12-30 15:06:16 C/C++开发