C++ 编程(由 ref 和 by val 的优势)查询?/ 编辑 byRef 以外的结构的方法



我正在复习模拟考试,试卷上的一个问题让我感到困惑。

Q.)应用程序需要将结构传递给函数,函数将修改结构的内容,以便在从函数调用返回时调用方可以使用新的结构值。 您会通过值、地址或引用将结构传递给函数吗?

清楚地说明您选择特定方法的原因。通过比较三种方法来证明您的选择。

现在我很难理解这一点,因为我认为这个问题的最佳答案总是通过 Ref,因为它获取值的引用指针并编辑其内容,而不仅仅是获取副本。如果使用基于类的程序,这将有所不同。

能理解的唯一另一种方法是拥有一个单独的值并获取和设置值,但这意味着额外的代码行,我有点不确定这意味着什么,任何人都可以帮助启发我吗?我不知道任何其他方法可以实现这一目标。

这不是"高级编程";它是C++的绝对基础。

对于任何给定的用例,按值返回或"out"参数(使用引用或指针实现)是否"最佳"取决于许多因素,风格和观点只是其中的两个。

// 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;
}

问题是问你这三种方法的优缺点是什么。

最新更新