问题标签 [assignment-operator]

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 投票
4 回答
4829 浏览

c++ - 在 C++ 中编写复制构造函数和赋值运算符的清单

请写一个副本构造函数和赋值运算符在 C++ 中需要执行的任务列表,以保持异常安全,避免内存泄漏等。

0 投票
5 回答
3597 浏览

c++ - 为什么虚拟分配的行为与相同签名的其他虚拟功能不同?

在玩实现虚拟赋值运算符时,我以一个有趣的行为结束。这不是编译器故障,因为 g++ 4.1、4.3 和 VS 2005 具有相同的行为。

基本上,就实际执行的代码而言,virtual operator= 的行为与任何其他虚函数不同。

效果是虚拟运算符 = 具有与具有相同签名的任何其他虚拟函数不同的行为([0] 与 [1] 相比),通过在通过真实派生对象调用时调用运算符的基本版本([1] ) 或派生引用 ([3]),而当通过基引用 ([2]) 调用时,或者当左值或右值是基引用而另一个是派生引用 ([4], [5])。

这种奇怪的行为有什么合理的解释吗?

0 投票
5 回答
80386 浏览

c++ - 如何在 C++ 中使用基类的构造函数和赋值运算符?

我有一个B带有一组构造函数和一个赋值运算符的类。

这里是:

我想创建一个D只覆盖函数的继承类,foo()不需要其他更改。

但是,我希望D拥有相同的构造函数集,包括复制构造函数和赋值运算符B

我是否必须在 中重写所有这些D,或者有没有办法使用B的构造函数和运算符?我特别想避免重写赋值运算符,因为它必须访问所有B的私有成员变量。

0 投票
2 回答
828 浏览

xcode - 如何让 Xcode 3.1 编译器在 if 语句中警告赋值运算符?

我已尽我所能搜索文档和互联网,但如果在 if 语句中使用赋值运算符,我无法让 Xcode 编译器发出警告。

我来自 RealBasic,在那里我有一个非常强烈的习惯,那就是输入这种比较:

当然,在 C 中,该语法将 x 赋值为 5,然后测试结果是否为非零,“正确”运算符是:

我发现有几处提到,如果在 if 比较中进行了赋值,编译器应该能够发出警告,但我找不到如何在 Xcode 3.1/gcc 中打开它。我找到了该-pedantic选项,但这似乎没有产生警告。

由于我现在已经花了相当多的时间两次来追踪结果是“=”而不是“==”的错误,所以我希望得到警告的帮助。

我知道我可以这样做(这将导致编译器错误):

...但这也需要改变根深蒂固的编码习惯。更不用说它看起来笨拙和落后。

谢谢!

0 投票
4 回答
6459 浏览

c++ - 减少 operator= 和复制构造函数之间的代码重复

我有一个需要非默认复制构造函数和赋值运算符的类(它包含指针列表)。有没有什么通用的方法可以减少复制构造函数和赋值运算符之间的代码重复?

0 投票
6 回答
5243 浏览

c++ - 从复制构造函数调用默认赋值运算符是不好的形式吗?

考虑需要复制的一类。副本中的绝大多数数据元素必须严格反映原始数据,但只有少数元素的状态不需要保留,需要重新初始化

从复制构造函数调用默认赋值运算符是不好的形式吗?

默认赋值运算符将与普通旧数据(int、double、char、short)以及用户定义的每个赋值运算符的类一起表现良好。指针需要单独处理。

一个缺点是,由于没有执行额外的重新初始化,这种方法使赋值运算符失效。也不可能禁用赋值运算符,从而打开用户使用不完整的默认赋值运算符创建损坏类的选项A obj1,obj2; obj2=obj1; /* Could result is an incorrectly initialized obj2 */

a(orig.a),b(orig.b)...放宽 to除了a(0),b(0) ...必须写的要求会很好。需要将所有的初始化编写两次,这会为错误创建两个位置,如果要将新变量(例如double x,y,z)添加到类中,则需要在至少 2 个位置而不是 1 个位置正确添加初始化代码。

有没有更好的办法?

在 C++0x 中有没有更好的方法?

输出:

替代复制构造函数:

0 投票
6 回答
1236 浏览

c++ - 使用公共赋值运算符进行私有复制 ctor 时出错

你们中的一个人能解释一下为什么下面的代码不能编译吗?

我收到的错误:

注意:当我删除private:关键字时,代码会编译,但永远不会调用复制 ctor。那么为什么它在私有时会出错呢?

不确定它是否重要,但我正在使用:

0 投票
2 回答
264 浏览

c++ - 嵌套模板中的 operator= (T *r)

我对嵌套模板和赋值运算符的覆盖有疑问。假设我想要一个引用计数类模板_reference。这个 _reference 现在只保存一个指向 ref-counted 对象的指针。现在的问题是这一切都很好,只要我用简单的类或结构来做这件事。例如。_参考 ...,

但现在我想制作一个类模板,它是对转发它所拥有的类的标准向量的引用。

不,我只是发布代码:(它现在不做引用计数和那些东西,它只是提取我​​遇到的问题)

MSVC 错误:

GCC 错误:

那么请任何人解释一下为什么赋值运算符在这里不起作用,而 simpleSetIt - 函数呢?

0 投票
8 回答
302894 浏览

r - R中的“=”和“<-”赋值运算符有什么区别?

=赋值运算符和R中有什么区别<-

我知道运营商略有不同,如本例所示

但这是唯一的区别吗?

0 投票
5 回答
7948 浏览

c# - C# += (plus equals) (Assignment by addition) 工作很慢,当字符串太长时?

我有一个 for 循环,我所做的就是这个。

代码在这个 forloop 中持续了很长时间,可能超过 1 分钟。我怎么解决这个问题?

谢谢。