如果我想使用该功能,我可以有哪些缺点
foo(int num, ...)
Run Code Online (Sandbox Code Playgroud)
实现可变数量的参数?
我知道你只能使用一种数据类型的第一个缺点.
还有其他办法吗?
您不限于一种数据类型的参数; 所述printf()的功能C(和C++)家族掩饰该传言.
省略号表示法的主要缺点是你失去了类型安全性; 当您使用错误类型的参数时,编译器无法告诉您.(Go编程语言允许您指定函数采用单个类型的任意数量的参数 - 这是一个有趣的想法.)
在函数内部,必须有一些方法来告诉它提供了多少参数以及类型是什么.printf()再次引用,格式字符串告诉它预期的其他参数.现代编译器知道这些格式字符串,并且可以检查给定的参数是否与格式字符串匹配(当格式字符串是文字时).这毕竟允许某种类型的安全 - 但是你无法使用它.使用计数是处理它的一种方法 - 但是你想知道为什么你没有使用vector<T>类似的东西来传递数据.另一种经典的方法是在结尾处有一个标记值 - 通常是空指针 -输入清单.
因此,您通常不需要可变参数列表.当你使用一个时,你通常会让自己开放出错以避免其他机制.
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |