问题标签 [copy-constructor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
220 浏览

c++ - 如何按值复制到容器类中?

我正在写一个稀疏矩阵类。我需要一个节点类,它将作为其内容的模板。我写这门课的问题是:

如何存储内容?

我想按值存储内容。如果我通过指针存储它并且它应该被销毁,那么我就会遇到麻烦。如何在 setContents 方法中安全地执行复制?C++ 是否提供任何保证,应该放置到我的节点容器中的类具有克隆自身的能力?

我已经查看了复制构造函数,但我有些疑虑。如果包含的类没有实现复制构造函数怎么办?然后通过引用将其传递给节点是不明智的,因为如果应该删除原始对象或超出范围,这可能会导致悬空引用。

执行此操作的“标准 C++”方式是什么?

0 投票
3 回答
294 浏览

c++ - 复制 ctor 和赋值运算符中是否存在语义略有不同的问题?

请看下面的代码,告诉我以后会不会出现问题,如果会,如何避免。

简而言之,我希望复制构造函数创建对象的精确副本,包括其(数据库)ID 字段。另一方面,当我分配时,我只想复制数据字段。但我有一些担忧,因为通常复制 ctor 和 operator= 具有相同的语义。

id 字段仅供 Note 及其朋友使用。对于所有其他客户端,赋值运算符确实创建了一个精确的副本。用例:当我想编辑笔记时,我使用 copy ctor 创建一个副本,对其进行编辑,然后在管理笔记的 Notebook 类上调用 save:

另一方面,当我想创建一个与现有笔记具有相同内容的全新笔记时,我可以这样做:

这种方法合理吗?如果不是,请指出可能的负面后果是什么!非常感谢!

0 投票
6 回答
36575 浏览

c++ - 我可以显式调用复制构造函数吗?

我对复制构造函数的机制有点困惑。如我错了请纠正我:

如果一个方法将一个对象的引用作为参数,并且该类定义了一个复制构造函数,那么该类使用构造函数创建自身的副本,并将其传递给函数而不是对原始对象的引用?

此外,可以调用

创建另一个对象的副本?

0 投票
1 回答
440 浏览

oop - 如何在 C++-CLI 中匿名复制对象?

我有一个数据流,它包含在System::Collections::Queue. 我的数据源可以将相同的数据输出到多个流,但这样做需要为每个流复制数据。我目前执行以下操作:

只要我发送MyData对象,它就可以正常工作。可以说我也想发送MyOtherData对象。像这样做一些更通用的事情会很好:

...但这不会编译,因为:

那么是否可以在不知道其类型的情况下复制对象?..如果是这样,我该怎么做?:)

0 投票
6 回答
1936 浏览

c++ - 在 C++ 中从不调用重载运算符

我正在编写一个数学库作为实践练习。我在重载 = 运算符时遇到了一些问题。当我调试它时,我注意到对 vertex1 = vertex2 的调用改为调用复制构造函数。

在头文件中我有:

在我实现的源文件中:

后来我有一个叉积方法,我想像这样使用它:

错误消息是:error: no matching function for call to `vector3::vector3(vector3)' 但我不想调用复制构造函数。

0 投票
5 回答
566 浏览

java - 复制构造函数类实例化

这是我实现复制构造函数的类

我试图在我的主要方法中为上述类创建一个实例

我不确定我应该作为参数传递什么。如果我必须传递一个 TestCopyConst 的实例,那么我必须再次选择“new”,这又会再次提示输入参数

这里缺少什么?或者复制构造函数的概念本身是不同的?

0 投票
3 回答
1486 浏览

c++ - C++ 复制构造函数、临时对象和复制语义

对于这个程序

我得到的输出是:

由于f()是按值返回,它应该返回一个临时的。照原样,T a = x;T a(x);不会调用复制构造函数来构造a,并将临时传入作为其参数吗?

0 投票
2 回答
4082 浏览

c++ - LinkedList 拷贝构造函数实现细节

我开始学习 C++,并作为练习决定实现一个简单的LinkedList类(下面是部分代码)。我对复制构造函数的实现方式以及访问原始数据的最佳方式有疑问LinkedList

我的复制构造函数是否应该LinkedList直接访问原始节点的每个节点上的数据?

还是应该通过相应的访问器访问数据?(我知道我没有定义访问者)。

另外,我打算创建一个自定义迭代器,以便可以迭代LinkedList. 我应该在复制构造函数中使用来访问每个节点上的数据吗?

另一个问题(完全题外话,我知道),何时和/或为什么我们应该声明一个指向LinkedList

代替

0 投票
3 回答
9103 浏览

c++ - 编译器生成的构造函数

这只是一个快速的问题,可以正确理解当您使用这样的构造函数创建类时会发生什么:

我知道没有生成默认构造函数,因为它已经定义但是是由编译器生成的复制和赋值构造函数,或者换句话说,我是否需要声明一个私有复制构造函数和一个私有赋值运算符以防止这种情况发生?

0 投票
9 回答
4850 浏览

c++ - 在什么情况下我必须为我的 C++ 类提供赋值运算符、复制构造函数和析构函数?

假设我有一个类,其中唯一的数据成员类似于std::stringor std::vector。我需要提供复制构造函数、析构函数和赋值运算符吗?