问题标签 [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.
c++ - RAII 和分配
我为 sqlite3 连接创建了以下类:
然后可以按如下方式初始化连接
但是,我希望能够共享此连接,将其存储为类中的成员等,而问题在于默认的赋值运算符operator=
。做类似的事情
当每个变量超出范围时,将导致对数据库指针的两次 sqlite3_close 调用。当您需要将资源分配给不同的变量时,如何使用 RAII 克服这一困难?
c++ - 什么是复制和交换成语?
这个成语是什么,应该在什么时候使用?它解决了哪些问题?使用 C++11 时习语会发生变化吗?
尽管在很多地方都提到过,但我们没有任何单一的“它是什么”问题和答案,所以在这里。以下是之前提到的地方的部分列表:
c++ - C++0x 中的特殊成员函数
关于特殊成员函数的 Wikipedia 文章不包含对移动构造函数和移动赋值运算符的任何引用。
我想更新条目,但我不确定 0x 标准是怎么说的。
这两个函数的规则是什么?它们是由编译器自动生成的吗?如果是,什么时候生成?
编辑:我已经更新了维基百科页面,如果有人喜欢它,请通过编辑它来帮助社区(如果需要)。
c++ - 具有赋值语义的非所有持有者
我有一个类应该包含对某些数据的引用,而不拥有该数据(即保证实际数据不会超出范围)。特别是,该类不能复制——数据大小很容易达到几 GB。
现在,通常的实现(我假设)是引用数据:
(请注意,const
ness 与问题完全无关)。
现在,我绝对需要这个类是可分配的(即有一个工作的operator =
)。我认为这是一个相当普遍的问题,但我不记得我以前是如何解决的(如果有的话)。
问题是无法分配引用,而且根本没有办法解决这个问题。我想出的唯一解决方案是使用placement new 代替赋值运算符:
现在,这有效并且符合标准。但它肯定是丑陋的。不——不可接受。
所以我正在寻找替代品。一个想法是使用指针,但我不确定我的构造函数是否真的可以保证工作(并且由于我必须遵守的接口,传递指针是不可能的):
但如果可能的话,我宁愿使用参考。只有——如何实现赋值运算符?
作为测试用例,请考虑以下代码:
(另外,为了清楚起见——我们正在谈论的类型是非 POD,我需要一个符合标准的解决方案。)
php - 分配变量时“=”和“=&”有什么区别?
我试图找出$a=&$b
和之间的区别$a=$b
。我知道&
使变量成为参考变量。但是下面的测试给了我同样的结果。谁能解释其中的区别?谢谢。
scala - Scala对现有变量的多重赋值
我可以做类似的事情
如果变量已经存在怎么办?我在过滤器上运行相同的数据集,我不想链接它们(长名称等)。这是我尝试过的,但它抱怨期待;而不是 = 在最后一行:
有没有办法避免中间元组?
c++ - 重载的赋值运算符没有被调用
我编写了一个perform
复制所有变量值的类的重载赋值运算符。例如:在 Exp.cpp
在另一个类output
中,我声明了一个指针abc
。
c# - C#中的方法参数赋值
给定下面的代码,Bar(int y) 中的方法参数 y 会被赋值为 x 还是 1?我意识到它们在逻辑上是等价的,但我想了解赋值操作。
c++ - 数组成员的默认复制分配
我有一个类似于以下的类定义:
我刚刚进行了一个单元测试失败,它正在验证复制分配是否正常工作。令我惊讶的是,buffer[] 数组中间的一个字节被错误地复制了。
我的理解是,默认的复制赋值运算符执行按成员复制,而对于数组成员(不是指向数组成员的指针),则需要按元素复制数组。我弄错了吗?
我的直觉是,我被一个悬垂的指针咬住了,它踩在了我的数组中间。但是,当我将这些对象的向量复制到另一个向量中时,我会重复看到这种情况。
有人愿意告诉我哪里出错了吗?
编辑:
稍微扩展一下,这个类不是 POD 类型——它派生自几个抽象基类,因此有一个虚拟析构函数。但是,数组是唯一的数据成员,在单元测试中破坏的用法是: