我的背景和直觉告诉我,我应该总是通过要求这样的参数创建一个更紧凑和更明确的函数接口:
bool someFunc(int param1, int param2, char param3, float param4) {
...
}
Run Code Online (Sandbox Code Playgroud)
或要求一个对象(结构或类),如:
class someObject {
...
int p1;
int p2;
char c1;
float p4;
}
Run Code Online (Sandbox Code Playgroud)
老板告诉我,我应该使用类似的东西:
bool someFunc(void *params[], int size) {
...
}
Run Code Online (Sandbox Code Playgroud)
因为它创建了更多可扩展(您可以通过这种方式迭代参数)和更快的代码.
我只对提高自己的能力感兴趣,但我的直觉违背了这种方法.他是对的吗?
可怕的想法.我无法列出单个答案中出现问题的原因,但主要问题是它无法正常工作.举个简单的例子,你不能传递3,如果你传递0就会变成nullptr.更重要的是,您必须将值转换回给定类型,那么为什么不在签名中指定类型呢?
现在有一个真正的C++替代品,可变参数模板:
template<typename... Arguments>
void Foo(Arguments... parameters);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,编译器将知道所有类型Arguments...
,不需要转换任何东西.
归档时间: |
|
查看次数: |
134 次 |
最近记录: |