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

    xiaoxiao2021-08-19  127

    为了编写能处理不同数量实参的函数,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函数的部分形参的类型,对于这些形参的实参将会执行正常的类型检查。省略符形参所对应的实参无须类型检 查。在第一种形式中,形参后面的逗号是可选的。
    转载请注明原文地址: https://ju.6miu.com/read-676699.html

    最新回复(0)