问题标签 [copy-assignment]

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 投票
1 回答
118 浏览

c++ - 具有复制分配的不同对象容器之间的自动化

我有一个稀疏向量类型std::vector<SparseElement<T,I>>,其中 SparseElement 是:

因为我用于填充std::map<I,T>作为元素的稀疏向量 a std::pair<I,T>,所以我想要一个解决方案而不更改 SparseElement 的“索引”和“值”成员:

0 投票
1 回答
604 浏览

c++ - C ++ 11 - 复制指向抽象类型的智能指针的构造?

我喜欢std::unique_ptr。它可以帮助我防止内存泄漏,这非常有用。但是有一个问题:不允许复制分配和构造。

尽管这个限制有助于程序员的安全,但它也是相当有限的。如果您使用复制分配和构造来处理以 std::unique_ptr 作为其成员的类,那么您最终会遇到问题。这就是为什么我使用复制构造和分配围绕 unique_ptr 创建了自己的包装器。这是它的复制构造函数:

这是复制赋值运算符:

一切都很好,直到我最终使用抽象基类作为类型(T)。我收到如下错误消息:

这让我很困惑。是否存在解决方法?

0 投票
1 回答
2049 浏览

c++ - 为什么这个向量分配不起作用?

类似问题:


这给了我一个段错误,我不知道为什么。

0 投票
1 回答
177 浏览

c++ - 类的复制赋值运算符

在以下情况下,编译器不会创建复制赋值运算符:

  1. 类具有 const 类型或引用类型的非静态数据成员。
  2. 类具有一个类型的非静态数据成员,该类型具有不可访问的复制赋值运算符。
  3. 类派生自具有不可访问的复制赋值运算符的基类。

在上述情况下,我通过上述示例理解了情况 1。但我没有得到案例 2 和案例 3,所以请通过一些例子帮助我理解。

0 投票
1 回答
122 浏览

c++ - 类成员在复制构造或通过分配复制后出现乱码(有时)

我的班级NRRanNormal代表一个正态分布的随机变量。默认情况下,实例正态分布,均值为 0,标准偏差为 1(即标准正态随机变量)。

有时当我复制NRRanNormal对象时,复制到(或通过复制构造函数构造)的对象的均值和标准差是乱码和胡说八道。我很难找到这种乱码的原因。

NRRanNormal出于测试目的,以下函数显示给定对象的均值和标准差:

现在,让我们看看以下 4 种情况会发生什么:

上述语句的输出如下:

如您所见,只需实例化一个对象 ( foo) 即可按预期工作。

现在,当我这样做时NRRanNormal bar1 = foo;,对象bar1是乱码。但是,当我这样做时,NRRanNormal bar2; bar2 = foo;对象不会乱码。这让我很困惑。我认为一个语句块如bar2

实际上是由编译器转换为语句块

因此,除非我刚刚在上面写的内容不正确,否则似乎bar1并且bar2应该具有完全相同的成员值。但正如您从上面粘贴的输出中看到的那样,bar1是乱码,而bar2很好。

怎么会这样?

您还会注意到这bar3是乱码。我不确定这是同一个问题,还是另一个问题。


这是接口和实现的简化版本NRRanNormal

Normaldev结构来自 Numerical Recipes 3d Edition。

我的复制赋值运算符或复制构造函数有问题吗?


这是Normaldev,剥离了专有计算。

0 投票
0 回答
148 浏览

php - PHP数组引用问题

输出:C(但我希望输出为 A)

显然,数组没有被“ = ”符号引用。

$c=$a; < 这应该复制 $a 并将其分配给 $c 。但是为什么这里会发生引用呢?

此外,如果我们简单地删除第二行($b=&$a[1];),或将其替换为($b=&$a;),它的行为与预期一样。

关于为什么会发生这种情况的任何解释?

0 投票
2 回答
358 浏览

reference - 对象会在 D 中的赋值中被复制吗?

当我在 D 中分配一个对象时,它会被复制吗?

0 投票
2 回答
1844 浏览

c++ - 初始化对象时复制构造函数/赋值运算符混淆

这样做有什么区别:

根据我在此处阅读的内容,两者都使用复制构造函数,但我不明白为什么会发生这种情况以及隐式转换如何发挥作用。我如何理解它(在阅读之前)是第一个通过创建临时对象使用默认赋值运算符(如果未定义)然后调用复制构造函数,但这似乎是错误的。我之所以问,是因为我读到,当使复制构造函数显式时,即使某些东西是 class_name 类型,第一个选项也会失败,因此这两个选项必须足够不同。在第一个选项的复制构造函数之上使用赋值运算符(使用默认或用户定义的实现)还是只是调用复制构造函数的用户友好语法形式?

0 投票
2 回答
117 浏览

c++ - 了解复制构造函数和复制赋值运算符

根据我的说法,如果使用了 1 复制赋值运算符,那么输出应该是0 68,但0 87在情况 2 中它是87 87可以的。

0 投票
4 回答
120 浏览

c++ - 动态分配时指向免费商店的新地址是一种好习惯吗?

以下是C++ Primer 第 5 版的练习:

练习 13.22:假设我们希望 HasPtr 表现得像一个值。也就是说,每个对象都应该有自己的对象指向的字符串副本。我们将在下一节展示复制控制成员的定义。但是,您已经知道实现这些成员所需的一切。在继续阅读之前编写 HasPtr 复制构造函数和复制赋值运算符。(第 511 页)

类代码HasPtr

我的这个复制赋值运算符的代码:

本书以下部分中提供的代码:

通过一步一步的执行,我发现两个代码之间有细微的差别。在我的代码中,它不会更改ps指向的地址,而书中的代码ps指向一个新地址。我想知道这种细微的差异是否有任何重要意义?在类似情况下,我是否应该始终将指针更改为新地址?为什么?