C++ 编程(由 ref 和 by val 的优势)查询?/ 编辑 byRef 以外的结构的方法
C++ Programming ( advantages of by ref & by val) query? / methods of editing struct other than 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;
}
问题是问你这三种方法的优缺点是什么。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 查询SQLite数据库中的日期
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在ArangoDb AQL查询中指定数据库
- Qt SQLite没有查询或参数计数不匹配
- 如何使用c++在VS 2019上运行SQL查询
- 编辑文件中的文本
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- 从返回的顶点缓冲区查询顶点结构
- SetDlgItemInt 不会更改嵌入资源的编辑框
- 以非特权用户身份查询 NTFS 特殊文件的元数据?
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- C++,Qt:仅在双击后编辑qtablewidget项目
- 编辑字符串以包含括号 c++ 之间的变量
- Arduino函数无法编辑数组
- 调试符号中缺少 QObject 类信息(编辑但存在其他 Qt 类)
- "未定义对'WinMain@16'的引用"gcc 编辑器中的错误
- C++ 编程(由 ref 和 by val 的优势)查询?/ 编辑 byRef 以外的结构的方法
- select查询在编辑中总是返回-1