VS2008传递变量-结构与结构组件-优点/缺点
VS2008 Passing Variables - struct vs struct components - advantages/disadvantages?
我真的希望这不是那些超级基本的问题之一。
总之,我有一个包含47个组件的结构,我正在调用各种函数,这些函数一次使用3到10个组件。
调用以下函数更好吗:foo(pParam->variable1, pParam->variable2, pParam->variable3)
或者CCD_ 2,然后在函数中使用CCD_?
提前感谢!
您应该通过引用传递结构,这样您就不需要复制所有值:
void foo(mySturct pParam); //Here the struct will be copy constructed.. relatively large overhead
void foo(Val1 param1, Val2 param2, Val3 param3); // 3 parameters passed by value, the value will be copied.
void foo(mySturct &pParam); //Only the reference to the structure is passed. Single pointer size value is passed.
一般情况下,存在结构,因此可以将数据统一起来。因此,将其拆开并将不同的参数传递给函数是没有意义的
它应该作为一个单独的单元。
我也遇到过类似的情况。分别传递每个组件。这让调用者清楚地知道哪些值是必需的,也让实现者清楚地知道了哪些值是可用的。
如果传递整个结构,那么调用方将不确定他们真正需要填充多少结构。更糟糕的是,函数实现者可能开始引用另一个不总是可用的或不总是有效的结构成员。
在维护过程中,您可能会看到的另一件事是,某些未使用的结构成员可能会被重载,以传递以前没有预料到的新参数,并且字段名称将不再与它们所代表的值匹配。
单独传递所有参数可以让每个人都清楚地了解合同的真实内容,并且可以显式地添加新参数。
我认为最好多考虑一下架构。一个有47个属性的结构,传递给不使用所有属性的各种函数,看起来像贫血域模型。您应该将它拆分为多个类,每个类都包含只能处理类中数据的方法。这样可以避免传递结构(通过类免费获得)和扩展程序的问题。
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 如何在C++中序列化结构数据
- std::vector的包装器,使数组的结构看起来像结构的数组
- 没有为自己的结构调用列表推回方法
- 自定义数据结构的优点是什么?
- 在类定义中使用结构的详细信息和优点
- VS2008传递变量-结构与结构组件-优点/缺点
- 在c++中,通过指针或实例访问类/结构的优点是什么?