问题标签 [pass-by-value]
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++ - 模板通过值或常量引用传递或...?
我可以这样写一个模板函数
或者这样
我猜第二个选项可能更优化,因为它明确地避免了复制,但我怀疑它对于某些特定类型T
(例如仿函数?)也可能失败。那么,什么时候应该使用第一个选项,什么时候使用第二个呢?在我之前的问题的答案中也有这个boost::call_traits<T>::param_type
和那个,但是人们不会到处使用它们,是吗?这有经验法则吗?谢谢。boost::reference_wrapper
c++ - 我应该在哪里更喜欢按引用传递或按值传递?
在什么情况下我应该更喜欢按引用传递?价值传递?
java - 如何修改传入Java方法的枚举
在上面的示例中,我将如何修改方法myResult
内的变量alter
?由于 Java 是按值传递的,因此该示例只是将其值分配给this.result
.
php - (如何)我应该使用对象引用?
考虑一个例子:
处理公司员工的应用程序库。员工详细信息存储在 CSV 文件中(请不要对此进行判断,因为这仅用作示例)。
处理员工信息的类是(代码非常简化,只是为了给你图片):
现在,目前在应用程序中没有使用任何引用。所有对象变量都是按值传递的。我认为这可能会产生一些开销。因此,一旦创建了所有 Employee 和 Team 对象,我只需尝试将所有调用更改为引用,例如:
但这暂时增加了内存使用量,这让我感到惊讶。我使用的示例只有 200 名员工,但我可以想象,当必须与企业打交道时,这可能会达到数千甚至更多,并且内存使用量会增长更多。
当我想到这个例子时,我试图模仿 ORM,我可以在其中做这样的事情:
理想情况下,“正确”(初始?)对象将只存储在Staff::$employees
and中Staff::$teams
,因此Staff::$teams_names['Team Name']
将是对Staff::$teams[n]
. 同样是对等Staff_Team::$managers
的引用数组。
但正如我所提到的 - 一旦我开始使用引用,内存使用量就会增加。Staff::$employees
问题:
那么我应该如何处理呢?
我应该使用按引用传递而不担心内存使用,还是应该使用按值传递?
在这种情况下哪个更好,为什么?
注1:我(认为我)确实理解通过值传递对象和通过引用传递对象之间的区别。我只是问在这个例子中哪个更好。
注意2: Staff_Employee 对象创建后可能会进行一些操作。不过可能非常少。
iphone - Objective-C 方法是否支持“按值传递”?
Objective-c 方法是否支持“按值传递”?或者更具体地说:
- 传递给方法的参数的默认行为是按引用传递吗?
- 如果是,在某些情况下是否有任何变化 - 例如,如果参数只是一个基本的 int 而不是一个对象?(或者这在objective-c中不相关)
- 无论如何,是否有一种方法支持基本变量(例如 int)的值传递?
- 反正有一个方法支持对象的值传递吗?(我在这里假设没有,但为了完整性会问。当然可以在消息中自己做副本,但是对于这种方法,我认为这不是 Objective-c 方法为您提供的东西,即它是自己动手)
谢谢
c# - Properties - by value or reference?
I've got the following public property which exposes an Arraylist
:
Elsewhere I'm calling
These seem to be adding elements to the private ArrayList _SpillageRiskDescriptions
(through the property) whereas I would've expected this to cause a problem. Therefore am I correct in thinking that properties return a reference to the original variable and not passing it by value? Is this because ArrayList
is a reference type? Will the same happen with an int
(for example?)
php - 递归PHP函数写入外部数组
这里真的有两个问题;为什么会这样?可以做些什么呢?
抱歉这个问题太长了,但大部分只是print_r
输出!
基本上,我从一个扁平的标签数组 ( $tags
) 开始,每个标签都有一个id
(数组索引),name
并且parent_id
. 然后我递归迭代$tags
并将所有子标签嵌套在它们的父标签中。(见下文)
有用!(见下文输出)。但是我遇到的问题是我的平面标签数组是从执行嵌套/递归的函数中写入的。(见下文)
标签的扁平数组:
这是嵌套子标签的递归调用函数。问题在于if
:我分配$tag
给它$tree[$i]
,然后将children
属性添加到它。这导致children
属性被添加到$tag
. 这就是我想要停止发生的事情。
嵌套标签输出:
children
将属性添加到$tree[$i]
或分配$tag
到$tree[$i]
以阻止这种情况发生时,我可以做些什么不同的事情?
谢谢!
c++ - C++:为什么对于内置(即类 C)类型,按值传递通常比按引用传递更有效
正如标题中所指出的那样
c - 存储在全局链表中的本地结构(并在其他函数中访问)在 VC2010 中有效。这是正确的 C99/ANSI 吗?
以下代码工作正常:
该结构是在除 main 之外的函数中本地创建的,但我能够从 localstructtest() 范围之外的链表中检索数据。局部变量是在堆栈上创建的,这个结构也是如此吗?或者它实际上是在堆上创建的并且指针/引用仍然有效?当我测试它时,我预计这会失败。我承认我是一名 C++ 程序员,我可能并不完全理解 C 中没有传递引用的后果。如果可以像这样使用结构数据,那么数据什么时候得到释放?
谢谢!
c++ - 重载 = 运算符时返回对象的深层副本
所以我为整数创建了一个容器类,我想重载=
运算符,以便我可以返回对象的深层副本。我的代码有效,但两个对象指向同一个地址。这是 main.cpp 文件:
这是IntList
该类的头文件:
这是IntClass
'soperator=()
方法的实现: