C++ VS2008传递变量-结构与结构组件-优点/缺点?

C++ VS2008传递变量-结构与结构组件-优点/缺点?,c++,visual-studio-2008,struct,parameter-passing,C++,Visual Studio 2008,Struct,Parameter Passing,我真的希望这不是一个超级基本的问题 总之,我有一个包含47个组件的结构,我正在调用各种函数,这些函数可以同时使用3到10个组件 调用如下函数是否更好: foo(pParam->variable1,pParam->variable2,pParam->variable3) 或者foo(pParam)然后在函数中使用pParam->variable1;pParam->variable2;pParam->variable3 提前谢谢 应该通过引用传递结构,这样就不需要复制所有值: void foo(my

我真的希望这不是一个超级基本的问题

总之,我有一个包含47个组件的结构,我正在调用各种函数,这些函数可以同时使用3到10个组件

调用如下函数是否更好:
foo(pParam->variable1,pParam->variable2,pParam->variable3)

或者
foo(pParam)
然后在函数中使用
pParam->variable1;pParam->variable2;pParam->variable3


提前谢谢

应该通过引用传递结构,这样就不需要复制所有值:

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个属性的结构,传递给不同的函数,这些函数并没有全部使用它们。您应该将它拆分为多个类,每个类都包含只处理类中数据的方法。这样可以避免传递结构(通过类免费获得结构)和扩展程序的问题。

我也遇到过类似的情况。分别传递每个组件。这让调用者清楚地知道需要哪些值,让实现者清楚地知道哪些值可用

如果您传递整个结构,那么调用方将不确定他们真正需要填充多少结构。更糟糕的是,函数实现者可能开始引用另一个不总是可用或不总是有效的结构成员

在维护期间您可能会看到的另一件事是,某些未使用的结构成员可能会被重载,以传递以前没有预料到的新参数,并且字段名将不再匹配它们所表示的值

单独传递所有参数可以让每个人都清楚合同的真正含义,并且可以明确添加新参数