【发布时间】:2023-03-17 04:20:02
【问题描述】:
我很难理解 Pass-by-Value-Result 方法。我了解 Pass-by-Reference 和 Pass-by-Value,但我不太清楚 Pass-by-Value-Result .它与 Pass-by-Value 有多相似(假设相似)?
这里是代码
#include <iostream>
#include <string.h>
using namespace std;
void swap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int value = 2;
int list[5] = {1, 3, 5, 7, 9};
swap(value, list[0]);
cout << value << " " << list[0] << endl;
swap(list[0], list[1]);
cout << list[0] << " " << list[1] << endl;
swap(value, list[value]);
cout << value << " " << list[value] << endl;
}
如果使用 Pass-by-Value-Result 方法,目标是确定 value 和 list 的值。 (不是按值传递)。
【问题讨论】:
-
查看您的代码,对
swap()的调用没有外部影响。它们的参数是按值传递的。我认为在这种情况下,“按值传递结果”是“如果swap()使用按值传递结果是什么?”的写得不好的版本。我可能会认为“按值传递结果”意味着“按值传递的函数结果”(即不返回引用或指针),但这在这里没有意义,因为swap()不返回任何内容。 -
@Mike 好的,有时 pass-by-value-result 被称为 pass-by-copy。如果有帮助
-
仍然看不出这与传递值之间的区别。
-
我假设“子程序”在这里只是“功能”的另一个词。 “......然后在子程序终止时复制回来。”等等,什么? C++ 有一个机制来做到这一点?我知道在函数终止时被显式复制回来的唯一一件事是返回值,并且允许优化器删除该副本。
-
@Willy:按值传递结果不是一回事。在 C++ 中传递对象有 3 种方法。按值传递、按引用传递和按常量引用传递。
标签: c++