C++ 编程(by ref & by val 的优点)查询? / 除 byRef 之外的编辑结构的方法
C++ Programming ( advantages of by ref & by val) query? / methods of editing struct other than byRef
我正在复习复习模拟考试,试卷上有一个问题让我感到困惑。
Q.)应用程序需要将结构传递给函数,这将修改结构的内容,以便在 return 从函数调用调用者可以使用新的结构值。你会按值、地址或引用将结构传递给函数吗?
清楚说明您选择特定方法的原因。通过比较三种方法来证明您的选择。
现在我很难理解这一点,因为我假设问题的最佳答案始终是 Ref,因为它采用值的引用指针并编辑其内容,而不仅仅是获取副本。如果使用基于 class 的程序,情况会有所不同。
我能理解的唯一其他方法是拥有一个单独的值并获取和设置值,但这意味着额外的代码行,我有点不确定这意味着什么,谁能帮助启发我?我不知道任何其他方法可以实现这一目标。
这不是"advanced programming";它是 C++ 的绝对基础。
对于任何给定的用例,return-by-value 或 "out" 参数(使用引用或指针实现)是否 "best" 取决于许多因素,风格和意见只是其中的两个他们。
// Return by value
// T a; a = foo(a);
T foo(const T& in) // or: T foo(T in)
{ // {
T out = in; //
out.x = y; // in.x = y;
return out; // return in;
} // }
// Out parameter (reference)
// T a; foo(a);
void bar(T& in)
{
in.x = y;
}
// Out parameter (pointer)
// T a; foo(&a);
void baz(T* in)
{
in->x = y;
}
问题是问你这三种方法的优缺点。
我正在复习复习模拟考试,试卷上有一个问题让我感到困惑。
Q.)应用程序需要将结构传递给函数,这将修改结构的内容,以便在 return 从函数调用调用者可以使用新的结构值。你会按值、地址或引用将结构传递给函数吗?
清楚说明您选择特定方法的原因。通过比较三种方法来证明您的选择。
现在我很难理解这一点,因为我假设问题的最佳答案始终是 Ref,因为它采用值的引用指针并编辑其内容,而不仅仅是获取副本。如果使用基于 class 的程序,情况会有所不同。
我能理解的唯一其他方法是拥有一个单独的值并获取和设置值,但这意味着额外的代码行,我有点不确定这意味着什么,谁能帮助启发我?我不知道任何其他方法可以实现这一目标。
这不是"advanced programming";它是 C++ 的绝对基础。
对于任何给定的用例,return-by-value 或 "out" 参数(使用引用或指针实现)是否 "best" 取决于许多因素,风格和意见只是其中的两个他们。
// Return by value
// T a; a = foo(a);
T foo(const T& in) // or: T foo(T in)
{ // {
T out = in; //
out.x = y; // in.x = y;
return out; // return in;
} // }
// Out parameter (reference)
// T a; foo(a);
void bar(T& in)
{
in.x = y;
}
// Out parameter (pointer)
// T a; foo(&a);
void baz(T* in)
{
in->x = y;
}
问题是问你这三种方法的优缺点。