gpt4 book ai didi

c++ - 具有可变参数的函数

转载 作者:太空狗 更新时间:2023-10-29 19:44:52 24 4
gpt4 key购买 nike

如果我想使用该功能会有哪些缺点

foo(int num, ...)

实现可变数量的参数?

我确实知道您只能使用一种数据类型的第一个缺点。

还有其他办法吗?

最佳答案

您不限于一种数据类型的参数; printf() C(和 C++)中的函数族证实了这一谣言。

省略号的主要缺点是失去了类型安全性;当您使用错误类型的参数时,编译器无法告诉您。 (Go 编程语言允许您指定一个函数接受任意数量的单一类型参数——这是一个有趣的想法。)

在函数内部,必须有一些方法可以告诉它提供了多少参数以及类型是什么。回头引用 printf()同样,格式字符串告诉它还需要什么其他参数。现代编译器知道这些格式字符串,并且可以检查给定的参数是否与格式字符串匹配(当格式字符串是文字时)。毕竟,这允许某种类型的安全性——但您将无法使用。使用计数是处理它的一种方式 - 但随后您想知道为什么不使用 vector<T>或类似的东西来传递数据。另一种经典方法是在输入列表的末尾有一个标记值——通常是一个空指针。

因此,您通常不需要可变参数列表。当您使用一个机制时,您通常会让自己容易犯其他机制避免的错误。

关于c++ - 具有可变参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3627274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com