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

xquery - 如何在 xquery 赋值中使用 if else

我正在尝试使用 if 条件为 xquery 中的变量赋值。我不知道该怎么做。

这是我尝试过的:

此代码引发 [XPST0003] Incomplete 'if' 表达式错误。有人可以帮我解决这个问题吗?

另外,有人可以建议一些好的教程来学习xquery。

谢谢,索尼

0 投票
3 回答
971 浏览

c++ - 当调用基类的指针时,赋值运算符是否没有重载?

我遇到了以下问题,这向我证明我对 C++ 的工作原理知之甚少。

我使用带有纯虚函数的基类

和类型的派生类

两者都实现了赋值运算符。除其他外,Derived 的赋值运算符复制 f1 中的数据。在我的代码中,我创建了 Derived 类的两个新实例

如果我现在调用赋值运算符

不调用Derived的赋值运算符,不复制f1中的数据!只有当我这样做时它才有效

有人可以解释为什么赋值运算符没有重载吗?

谢谢!

0 投票
4 回答
1553 浏览

c++ - C++ - 在创建时调用赋值运算符而不是复制构造函数

我想在类似于原生类型的结构之间强制执行显式转换:

我想使用赋值运算符和复制构造函数来做同样的事情,但行为不同:

是否有任何技巧可以使用默认构造函数获取第三种情况Struct s3 = other_struct;构造 s3 然后调用赋值运算符?

这一切都按应有的方式编译和运行。C++ 的默认行为是在创建新实例立即调用复制构造函数时调用复制构造函数而不是赋值运算符,(即MyStruct s = other_struct;变为MyStruct s(other_struct); 不是MyStruct s; s = other_struct;。我只是想知道是否有任何技巧可以解决这个问题.

编辑:“显式”关键字正是我所需要的!

0 投票
2 回答
2328 浏览

javascript - 有没有办法在 JavaScript 中自定义/覆盖赋值操作?

每次我分配一个字符串时,我实际上都想分配一个字符串对象,而不需要额外的代码。

var foo = "bar";
变成var foo = new String("bar");

基本上是劫持任务。


追问:
如果以上都做不到,有没有办法对string变量类型进行原型化,而不是String对象?

正如armando所指出的,这foo将是一个字符串类型,但本质上是一个自定义数组。能够将函数原型化到该类会很好。

0 投票
9 回答
18355 浏览

c++ - 为什么不能使用非成员函数来重载赋值运算符?

赋值运算符可以使用成员函数重载,但不能使用非成员friend函数:

它会导致此错误:

错误 C2801:'operator =' 必须是非静态成员

为什么不能使用friend函数来重载赋值运算符?编译器允许重载其他运算符,例如+=-=using friend。支持的内在问题/限制是operator=什么?

0 投票
3 回答
4997 浏览

c++ - C++ - 为默认类型重载赋值运算符

我想为“int”、“long”等类型重载赋值运算符。也就是说,我想使用如下代码:

显然赋值运算符不能是友元函数。我如何实现上述目标?

我可能错过了一些简单的东西,但只是想不出这样做的语法/方法。

此外,一个 IMP 限制 - 我们不能使用 get/set 方法,因为 :: 在发布代码中,我们将 CX 类型定义为 int 或 long(根据需要),但在 DEBUG 代码中,我们希望将其作为一个类(用于自动在数千个地方进行类型检查)。代码需要通用。原因是编译器(至少我们正在使用的版本)在某种程度上无法优化所有操作,如果 CX 是一个类。


一个问题是 - 我不希望这通过:

我假设下面的铸造解决方案也会隐含地使长/短等代码通过。(如果没有,那么这正是我正在寻找的!)。

在相关说明中,回答 David 的问题——我想重构的原因是——我们希望能够将 CX 切换为 32 位或 64 位。因此,我们希望禁止任何隐式转换并在编译时捕获它们。现在,相反 - (不允许

CX x = some_64_bit_int;

但允许

CX x = some_32_bit_int;

我通过使用模板化 = 运算符来实现,该运算符默认在编译时断言,但为我想要的类型重载它。


如果您觉得这是一个糟糕的设计,或者我应该尝试其他替代方案 - 我需要的原因是:我们有数千行遗留代码,其中某些内容只是类型定义为“int”。

到处都有作业,例如:

我正在做一个将 CX 更改为类的项目。在第一阶段,我们要修复所有编译错误(使 CX 成为一个类),尽可能少地更改代码。

0 投票
1 回答
705 浏览

automake - automake中赋值运算符之间的区别

automake 中有 2 种赋值变体。= 和 := 它们之间有区别吗?

0 投票
8 回答
31182 浏览

c++ - const 成员和赋值运算符。如何避免未定义的行为?

回答了关于std::vector of objects 和 const-correctness的问题,并收到了关于未定义行为的评论。我不同意,因此我有一个问题。

考虑具有 const 成员的类:

我想要一个赋值运算符,但我不想const_cast在下面的代码中使用答案之一:

我的解决方案是

我是否有未定义的行为 (UB)?

没有 UB 会有什么解决方案?

0 投票
2 回答
6066 浏览

c++ - 复制控制函数中如何处理 C++ 数组成员?

这是我想了很久的事情。举个例子:

我知道这个特定示例中的默认构造函数和析构函数做了什么(什么都没有),但是复制构造函数和复制赋值运算符呢?

它涉及std::copystd::uninitialized_copymemcpy或或memmove或什么?

0 投票
8 回答
331242 浏览

c++ - 什么是三法则?

  • 复制对象是什么意思?
  • 什么是复制构造函数复制赋值运算符
  • 我什么时候需要自己申报?
  • 如何防止我的对象被复制?