问题标签 [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 投票
5 回答
121 浏览

c++ - 为什么复制赋值运算符的参数应该是引用?

“operator= 应该采用 src obj 的(当然,最好的)ref 的参数”,我在很多书中都看到了这一点,但我尝试使用非 ref 代替,它也有效!所以,使用的目的是什么ref?是否只是为了避免从参数中复制?我的测试代码是,

0 投票
1 回答
87 浏览

c++ - Different ways to use default argument to a constructor in C++

What is the difference between the following three pieces of code with respect to MSVC?

Code 1: Foo ctor defined as:

Foo ctor used as:

Code 2: Foo ctor defined as:

Foo ctor used as:

Code 3: Foo ctor defined as:

Foo ctor used as:

Edit: Made corrections to the code. The intention was to explain the idea, didn't focus on the code, so made the mistake. Sorry about that.

The question specifically is to figure out the difference between code 2 and 3. Due to some reason, in the case of Code 2, the consumer of the Foo class ctor results in a crash and in case of Code 3 it doesn't. I don't have the specific code of the consumer, so cannot figure it out myself.

0 投票
5 回答
803 浏览

c++ - 为什么不是只有一个?复制构造函数和赋值运算符

我明白在什么情况下调用哪个...

我的问题是为什么这两种不同的东西存在?为什么不能只有两者中的一个同时处理这两种情况?

0 投票
6 回答
1028 浏览

c++ - 分配自身时的复制分配运算符

我正在阅读推荐的 C++ 书籍之一,它建议在复制分配部分;

即使将对象分配给自身,赋值运算符也能正确工作,这一点至关重要。这样做的一个好方法是在销毁左手操作数之前复制右手操作数。

书中的例子;类有一个数据成员ps,并且ps is string *

但我们的教练建议

导师的做法有问题吗?

0 投票
0 回答
28901 浏览

c++ - 为什么数组在 C/C++ 中不可赋值?

可以将一个结构分配给另一个结构,这会导致将结构中的所有值复制到另一个结构:

但是为什么数组不能像这样分配:

因为,严格来说,结构只是具有可变大小元素的数组,那为什么不允许呢?无论如何,这种分配是未使用的。当然,看起来似乎只涉及地址,但可以通过这种方式轻松复制数组(“静态”)。

0 投票
1 回答
82 浏览

c++ - 已删除的合成默认构造函数

我在书中读到:

如果成员具有已删除或不可访问的复制分配运算符,或者如果类具有 const 或引用成员,则合成的复制分配运算符被定义为已删除。

为什么我们不能使用引用类型?

0 投票
1 回答
116 浏览

c++ - 运算符重载“+”和“=”问题——学校助理

第一次在这里发布海报,但现在已经潜伏了几个月。目前沉迷于 C++,并从学校以前的 Comp Sci 课程中获得了少量的 Java 知识。如果你们中的一些人看到这个并感到失望,我深表歉意,因为已经存在关于运算符重载的问题,但是我无法将我的程序与我在这里找到的内容完全不同的问题放在一起。

这个问题尤其与 + & = 运算符有关。我已经在课堂上完成了几个涉及这两种重载的程序,而且我似乎没有任何困难使程序正常运行;然而,这些先前的程序和我目前的程序肯定有一些明显的区别,我没有看到这超出了我对每个运算符重载如何工作的理解。

错误消息本身使问题看起来几乎太容易修复,因为它显然只是一个操作数匹配问题,但我仍然无法找到正确的语法来纠正这些错误。它们如下:

代码如下:

GradeMain.cpp:

等级.cpp:

等级.h:

我对 operator= 问题的部分困惑是,当我将 student3 分配给 student1 时,没有问题,但是当我简单地分配 student2 = "Bill Miller" 时,它遇到了操作数问题。我原以为这只会创建 student2("Bill Miller", 0) 的对象,但我一定是在某个地方错了。我只能想象,在根据当前分配的成绩分配新变量时,无论什么纠正这一点,都会纠正更新student1的成绩的操作数问题。有些东西告诉我,这可能只是函数目前的结构方式,可能 operator+ 重载需要类似于“int Grade::operator+(const Grade &)”而不是“Grade Grade:operator+(const年级 &)”,

您可以指出我的任何方向以更好地了解如何摆脱我所处的情况,这绝对是极好的,只是不要直接给我答案(当然)!鉴于这是课堂作业,任何建议都应仅与 Grade.cpp 和 Grade.h 有关,因为 GradeMain 由讲师提供。

非常感谢阅读:)

0 投票
3 回答
4820 浏览

c++ - 我可以为 QObject 的子类提供复制构造函数吗?

在这里我们可以读到没有复制构造和复制赋值运算符可评估。但是在这里我们可以阅读它qRegisterMetaType并且Q_DECLARE_METATYPE必须有公共默认构造函数、公共复制构造函数和公共析构函数。问题是:谁在说谎?还是我没有正确理解?

0 投票
1 回答
76 浏览

c++ - c++ 在派生类中定义复制赋值

所以我有以下简单的代码

我的问题是运算符 = 的定义,因为我收到以下错误,除非我注释 B=A 行:

我已经尝试了许多有关复制分配的解决方法,但没有任何效果。我需要在基类中定义它,因为我需要另一个派生类(派生2),理想情况下我什至能够在派生类之间相等。

编辑:粘贴错误的代码

0 投票
2 回答
123 浏览

c++ - 实现类值复制赋值运算符

在 C++ Primer 中有一个使用复制控制成员使类行为“类值”的示例;也就是说,在复制对象时,副本是独立的。它提出了以下代码:

我的问题是关于复制分配运算符。据我了解,它的作用是在堆上创建一个新字符串,删除旧字符串,并使 lhs 指向新字符串。这真的有必要吗?通过简单地分配给堆上的现有字符串,下面的代码会不会做完全相同的事情?