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

c++ - 隐式复制构造函数/赋值运算符的行为

我有一个关于 C++ 标准的问题。

假设您有一个带有用户定义的复制构造函数和赋值运算符的基类。派生类使用编译器生成的隐式类。

派生类的复制/赋值是否调用用户定义的复制构造函数/赋值运算符?或者您是否需要实现调用基类的用户定义版本?

感谢您的帮助。

0 投票
3 回答
225 浏览

c++ - 为什么赋值运算符会做一些与其匹配的构造函数不同的事情?

我正在阅读一些提升代码,并遇到了这个:

它似乎将所有构造函数映射到赋值运算符。伟大的。但是为什么 C++ 会选择让它们做不同的事情呢?我能想到的只是 scoped_ptr?

0 投票
3 回答
4665 浏览

c++ - 构造函数或赋值运算符

你能帮我在 C++ 标准中有定义,描述在这种情况下哪个将被称为构造函数或赋值运算符:

还是只是编译器优化的问题?

0 投票
5 回答
4078 浏览

c++ - 赋值运算符的参数必须是引用吗?

在 C++ 中重载类的赋值运算符时,它的参数必须是引用吗?

例如,

是真的吗

?

谢谢!

0 投票
2 回答
259 浏览

objective-c - 在 Objective C 中,if (object == nil) 和 if (nil == object) 之间有区别吗?

我会倾向于

但我注意到在一些教程中使用

这只是一种风格,还是使用任何一种格式都有合理的理由?

0 投票
6 回答
1268 浏览

c++ - 赋值运算符重载问题

这个问题让我很困惑。第一段代码可以正常工作而不会崩溃,它将 s1 分配给 s2 非常好。但是第二组代码导致程序崩溃。

任何人都知道为什么会发生这种情况或问题可能是什么?

代码1:(作品)

代码 2:(分配时崩溃)

屏幕类的赋值运算符:

Field 类的赋值运算符:

任何投入将不胜感激 :)

0 投票
7 回答
50029 浏览

c++ - 为什么复制赋值运算符必须返回引用/常量引用?

在 C++ 中,我不清楚从复制赋值运算符返回引用的概念。为什么复制赋值运算符不能返回新对象的副本?另外,如果我有 class A,以及以下内容:

operator=定义如下:

0 投票
5 回答
2887 浏览

c++ - 防止复制构造和分配返回值引用

如果我有一个函数返回对我无法控制其源的类实例的引用,请说list<int>

我想确保它的值分配给另一个引用,例如:

如果用户改为:

我希望它是一个编译时错误,因为用户只会操作列表的副本而不是原始列表(这绝不是我的应用程序想要/想要的)。

有什么方法可以防止上面的复制构造和赋值(比如通过某种“包装器”类)?

理想情况下,如果要使用某个包装类,比如说wrapper<T>,我希望它适用于任何类型的对象T


是的,我知道对于我可以控制的类我可以简单地使复制构造函数和赋值运算符private像:

禁止复制构建和转让;但是,如上所示,我想这样做,例如,std::list我不能简单地制作复制构造函数和赋值运算符private

0 投票
3 回答
156 浏览

c++ - 将临时变量作为 LValues 传递

我想使用以下成语,我认为这是非标准的。我有利用返回值优化返回向量的函数:

然后,我想使用

some_func不返回 LValue。上面的代码很有意义,我发现这个成语非常有用。但是,它是非标准的。VC8 只发出最高警告级别的警告,但我怀疑其他编译器可能会拒绝它。

我的问题是:是否有某种方法可以实现我想做的相同的事情(即构造一个向量,分配给另一个向量,然后销毁旧的向量),它是合规的(并且不使用赋值运算符,见下文) ?

对于我写的课程,我通常将分配实现为

它利用了复制省略,解决了我的问题。然而,对于标准类型,我真的很想使用,swap因为我不想要临时的无用副本。

而且由于我必须使用 VC8 并生成标准 C++,我不想听到有关 C++0x 及其右值引用的信息。

编辑:最后,我想出了

当我使用左值时,因为如果 y 是临时的,编译器可以自由优化对复制构造函数的调用,并std::swap在我有左值时继续使用。我使用的所有类都是“必需的”来实现非愚蠢版本的std::swap.

0 投票
1 回答
803 浏览

vb.net - 我可以在 vb.net 结构中定义赋值运算符吗?

我的结构实际上是一个具有更多功能的简单字节。

我是这样定义的:

我想拥有这两个功能:

有没有办法做到这一点?

如果有一种从结构继承的方法,我只需从字节继承添加我的功能,基本上我只需要一个具有自定义功能的字节结构。

当您想定义新的单例成员值类型(例如,您想定义一个半字节类型等)并且您希望能够通过分配给数字或其他语言来设置它时,我的问题也是有效的类型化的表示。

换句话说,我希望能够定义以下 Int4 (nibble) 结构并按如下方式使用它: