(33)含有可变形参的函数

为了编写能处理不同数量实参的函数,C++提供了两种主要的方法:
一.如果所有的实参类型相同,可以传递一个名为initializer_list的标准库类型
二.提供一种特殊的形参类型(即省略符),可以用它传递可变数量的实参。这种功能一般只用于与C函数交互的接口程序

initializer_list形参

 如果函数的实参数量未知但是全部实参的类型相同,我们可以使用initializer_list类型的形参。initializer_list是一种标准库
类型,用于表示某种特定类型的值的数组。initializer_list类型定义在同名的头文件中。


和vector一样,initializer_list也是一种模板类型。定义时必须说明列表中所含元素的类型:
 initializer_list<int> li;

和vector不一样的是,initializer_list对象中的元素永远是常量值,我们无法改变initializer_list对象中的元素。

作用于initializer_list对象的begin和end操作类似于vector对应的成员。begin()成员提供一个指向列表首元素的指针,end()成员提供一个指向列表尾后元素的指针。

省略符形参

 省略符形参是为了便于C++程序访问某些特殊的C代码而设置的,这些代码使用了名为varargs的C标准库功能。通常,省略符形参不应用于其他目的。你的C编译器文档会描述如何使用varargs。

 省略符形参应该仅仅用于C和C++通用的类型。特别应该注意的是,大多数类类型的对象在传递给省略符形参时都无法正常使用。

省略符形参只能出现在形参列表的最后一个位置,它的形式无外乎以下两种:
void foo(parm_list ...);
void foo(...);
第一种形式指定了foo函数的部分形参的类型,对于这些形参的实参将会执行正常的类型检查。省略符形参所对应的实参无须类型检
查。在第一种形式中,形参后面的逗号是可选的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值