Tag: 通过引用

C ++ – 将引用传递给std :: shared_ptr或boost :: shared_ptr

如果我有一个需要使用shared_ptr的函数,将它的引用传递给它是不是更有效率(所以为了避免复制shared_ptr对象)? 什么是可能的不良副作用? 我设想了两种可能的情况: 1)里面的函数副本是由参数,如在 ClassA::take_copy_of_sp(boost::shared_ptr<foo> &sp) { … m_sp_member=sp; //This will copy the object, incrementing refcount … } 2)里面的函数只是使用参数,就像 Class::only_work_with_sp(boost::shared_ptr<foo> &sp) //Again, no copy here { … sp->do_something(); … } 在这两种情况下,我都看不到通过值而不是引用传递boost::shared_ptr<foo>的好理由。 按值传递只会“暂时”增加由于复制引起的引用计数,然后在退出函数范围时将其递减。 我可以俯视吗? 为了澄清,在阅读了几个答案之后,我完全赞同过早优化的问题,而且我总是试图首先在那个热点上工作。 如果你明白我的意思,我的问题更多的来自纯技术的代码观点。

何时通过PHP引用

林想知道,如果它是一个很好的做法传递引用,当你只是读一个variables,或者如果它应该总是作为一个值传递。 通过引用的示例: $a = 'fish and chips'; $b = do_my_hash($a); echo $b; function &do_my_hash(&$value){ return md5($value); } 传递值示例: $a = 'fish and chips'; $b = do_my_hash($a); echo $b; function do_my_hash($value){ return md5($value); } 哪个更好 ? 例如,如果我要循环1000轮? 循环的例子: for($i = 0 ; $i < 1000 ; $i++){ $a = 'Fish & Chips '.$i; echo do_my_hash($a); }

C ++通过引用传递一个数组

这是否允许通过引用传递数组? void foo(double& *bar) 似乎我的编译器说不。 为什么? 什么是通过引用传递数组的正确方法? 还是一个工作? 我有一个数组参数,我的方法应该修改,我应该后来检索。 另外,我可以使这个数组成为一个类的成员,这工作正常,但它有其他部分我的代码(我想避免)的许多缺点。 感谢致敬。

在C中通过引用传递数组?

我怎样才能通过C引用的结构数组? 举个例子: struct Coordinate { int X; int Y; }; SomeMethod(Coordinate *Coordinates[]){ //Do Something with the array } int main(){ Coordinate Coordinates[10]; SomeMethod(&Coordinates); }

R:通过引用传递

你能通过参考与“R”? 例如,在以下代码中: setClass("MyClass", representation( name="character" )) instance1 <-new("MyClass",name="Hello1") instance2 <-new("MyClass",name="Hello2") array = c(instance1,instance2) instance1 array instance1@name="World!" instance1 array 输出是 > instance1 An object of class “MyClass” Slot "name": [1] "World!" > array [[1]] An object of class “MyClass” Slot "name": [1] "Hello1" [[2]] An object of class “MyClass” Slot "name": [1] "Hello2" 但我希望是的 > instance1 […]

通过引用传递或通过值?

在学习一门新的编程语言时,可能遇到的障碍之一就是这个语言默认是按值传递还是按引用传递的问题 。 所以,这是我的问题,以你最喜欢的语言向你们所有人怎么做? 有什么可能的陷阱 ? 当然,你最喜欢的语言可以是你曾经玩过的任何东西: stream行的 , 晦涩的 , 深奥的 , 新的 , 旧的 …

R中的copy-on-modify语义是什么,哪个是规范的源代码?

每过一段时间,我都会遇到R具有copy-on-modify语义的概念,例如在Hadley的devtools wiki中 。 大多数R对象具有copy-on-modify语义,因此修改函数参数不会改变原始值 我可以追溯到R-Help邮件列表。 例如,Peter Dalgaard在2003年7月写道: R是一种function性语言,具有懒惰评估和弱dynamictypes(一个variables可以随意改变types:a <-1; a < – “a”是允许的)。 从语义上讲,尽pipe在实现中使用了一些优化技巧来避免最糟糕的低效率,但一切都是复制修改的。 同样,Peter Dalgaard在2004年1月写道: R有复制修改语义(原则上有时在实践中),所以一旦一个对象的一部分发生变化,你可能不得不在新的地方寻找包含它的东西,包括可能的对象本身。 更进一步, 2000年2月, Ross Ihaka说: 我们付出了相当多的努力来实现这一目标。 我会将语义描述为“在修改时复制(如果需要)”。 仅在对象被修改时才进行复制。 (如果有必要)部分意味着如果我们能certificate修改不能改变任何非局部variables,那么我们就直接进行修改而不复制。 这不在手册中 无论我多么努力地search,我都无法在R手册中find对“copy-on-modify”的引用, R语言定义和R内部 题 我的问题有两个部分: 这个正式logging在哪里? 复制修改如何工作? 例如,说“传引用”是否合适,因为承诺会传递给函数?

如何通过引用传递基元数据types?

我怎样才能在java中通过引用传递一个原始types? 例如,我如何让一个int传递给一个可修改的方法?

PHP中的数组是通过值还是通过引用传递的?

当一个数组作为parameter passing给一个方法或函数时,它是通过引用传递的? 那么做什么: $a = array(1,2,3); $b = $a; $b是对$b的引用吗?

为什么我应该在Java的方法参数中使用关键字“final”?

当在方法参数上使用final关键字时,我无法理解final关键字在哪里。 如果我们排除匿名类的使用,可读性和意向声明,那么对我来说似乎几乎是毫无价值的。 强调一些数据保持不变并不像看起来那么强劲。 如果参数是一个基元,那么它将不起作用,因为该参数作为一个值传递给该方法,并且改变它将不会影响该范围。 如果我们通过引用传递一个参数,那么引用本身就是一个局部variables,如果引用是从方法内部改变的,那么在方法范围之外不会有任何影响。 考虑下面的简单testing例子。 虽然该方法改变了给定的参考值,但该testing通过,但是没有效果。 public void testNullify() { Collection<Integer> c = new ArrayList<Integer>(); nullify(c); assertNotNull(c); final Collection<Integer> c1 = c; assertTrue(c1.equals(c)); change(c); assertTrue(c1.equals(c)); } private void change(Collection<Integer> c) { c = new ArrayList<Integer>(); } public void nullify(Collection<?> t) { t = null; }