为什么是按引用而不是按值?
Why is it by-reference and not by value?
我正在为即将到来的测试做一些修改,遇到了这个问题:
评分方案中的答案是:
然而,我认为它会反过来。鉴于食物已更改,我认为 FoodList 将按价值传递,而食物将按参考传递。你能解释一下为什么是相反的吗?
更新:答案可能有误,评分方案中有不少错误。
我唯一的解释是作者混淆了"by value"和"by reference"。
但是,如果性能起到任何作用,FoodList
也应该作为参考传递,因为复制参考通常比复制整个字符串更便宜。某些语言(如 C++)允许您将引用标记为常量。这样可以防止子程序修改它的值。
此外,在大多数编程语言中,子程序称为函数并具有 return 个值。最好只对输入使用参数,对子程序的输出使用 return 值。 (要找出为什么这是好的做法,请搜索术语 "side effects" 和 "referential transparency"。)
在 C++ 中,函数可以声明如下:
std::list<std::string> Make_List( const std::string& foodList );
我正在为即将到来的测试做一些修改,遇到了这个问题:
评分方案中的答案是:
然而,我认为它会反过来。鉴于食物已更改,我认为 FoodList 将按价值传递,而食物将按参考传递。你能解释一下为什么是相反的吗?
更新:答案可能有误,评分方案中有不少错误。
我唯一的解释是作者混淆了"by value"和"by reference"。
但是,如果性能起到任何作用,FoodList
也应该作为参考传递,因为复制参考通常比复制整个字符串更便宜。某些语言(如 C++)允许您将引用标记为常量。这样可以防止子程序修改它的值。
此外,在大多数编程语言中,子程序称为函数并具有 return 个值。最好只对输入使用参数,对子程序的输出使用 return 值。 (要找出为什么这是好的做法,请搜索术语 "side effects" 和 "referential transparency"。)
在 C++ 中,函数可以声明如下:
std::list<std::string> Make_List( const std::string& foodList );