c – 带有可变参数的函数
发布时间:2020-12-16 10:28:05 所属栏目:百科 来源:网络整理
导读:如果我想使用该功能,我可能有哪些缺点 foo(int num,...) 实现可变数量的参数? 我知道你只能使用一种数据类型的第一个缺点. 还有其他办法吗? 解决方法 有多种方法不使用省略号表示法. 为什么?由于类型安全,原始的危险操作(va_start,va_arg,va_next),你无法
如果我想使用该功能,我可能有哪些缺点
foo(int num,...) 实现可变数量的参数? 我知道你只能使用一种数据类型的第一个缺点. 还有其他办法吗? 解决方法
有多种方法不使用省略号表示法.
为什么?由于类型安全,原始的危险操作(va_start,va_arg,va_next),你无法真正转发到另一个功能等… 但是,与C相反,C提供了模板方法,它提供了类型安全性和通用行为,并且可以通过重载来累积: template <typename Arg0> void foo(int num,Arg0 const& arg0); template <typename Arg0,typename Arg1> void foo(int num,Arg0 const& arg0,Arg1 const& arg1); // ... etc 这是当前的技术水平,通常由预处理器编程的微妙应用(检查Boost.Preprocessor)帮助. 使用新的C 0x标准,可变模板提供与C变量方法相同的设施,提供类型安全(yeeha) template <typename Arg0,typename... Args> void foo(Arg0 arg0,Args... args) { // Do something with arg0 foo(args); } template <typename Arg0> void foo(Arg0 arg0) { // Do something with arg0 } 这也允许更容易地定义元组类:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |