C++中可以接受任意多个参数的函数定义方法(详解)

能够接受任意多个参数的函数,可以利用重载来实现。这种函数的执行过程类似于递归调用,所以必须要有递归终止条件。

#include <iostream>
#include <bitset>

void print() {} // 递归终止条件。这是必需的。

template<typename Type, typename... Types>
void print(const Type& arg, const Types&... args)
{
  std::cout << arg << std::endl;
  print(args...);
}

int main()
{
  print(1, 3.1415, "Hello, world!", 1.618, true, std::bitset<16>(377), 40);
  return 0;
}

执行后的结果如下:

1
3.1415
Hello, world!
1.618
1
0000000101111001
40 

以上就是小编为大家带来的C++中可以接受任意多个参数的函数定义方法(详解)全部内容了,希望大家多多支持我们~

时间: 2016-10-28

C/C++中可变参数的用法详细解析

可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等.可变参数是实现printf(),sprintf()等函数的关键之处,也可以用可变参数来对任意数量的数据进行求和,求平均值带来方便(不然就用数组或每种写个重载).在C#中有专门的关键字parame,但在C,C++并没有类似的语法,不过幸好提供这方面的处理函数,本文将重点介绍如何使用这些函数. 第一步 可变参数表示用三个点-来表示,查看printf()函数和scanf(

浅析C/C++中的可变参数与默认参数

千万要注意,C不支持默认参数 C/C++支持可变参数个数的函数定义,这一点与C/C++语言函数参数调用时入栈顺序有关,首先引用其他网友的一段文字,来描述函数调用,及参数入栈: ------------ 引用开始 ------------ C支持可变参数的函数,这里的意思是C支持函数带有可变数量的参数,最常见的例子就是我们十分熟悉的printf()系列函数.我们还知道在函数调用时参数是自右向左压栈的.如果可变参数函数的一般形式是:    f(p1, p2, p3, -)那么参数进栈(以及出栈)的顺

C++可变参数的实现方法

可变参数的实现要解决三个问题: 1.如何调用带有可变参数的函数2.如何编译有可变参数的程序3.在带有可变参数的函数体中如何持有可变参数第一个问题, 调用时在可以传入可变参数的地方传入可变参数即可,当然,还有一些需要注意的地方,后面会提到. 第二个问题,编译器需要在编译时采用一种宽松的检查方案,,这会带来一些问题, 比如对编程查错不利. 第三个是我在这里要关心的问题,先以C语言为例分析其实现原理. printf和scanf是C语言标准库中最常见的可变参数函数, printf的签名是 复制代码 代码

C++可变参数的函数与模板实例分析

本文实例展示了C++可变参数的函数与模板的实现方法,有助于大家更好的理解可变参数的函数与模板的应用,具体内容如下: 首先,所谓可变参数指的是函数的参数个数可变,参数类型不定的函数.为了编写能处理不同数量实参的函数,C++提供了两种主要的方法:如果所有的实参类型相同,可以传递一个名为initializer_list的标准库类型:如果实参的类型不同,我们可以编写可变参数模板.另外,C++还有一种特殊的省略符形参,可以用它传递可变数量的实参,不过这种一般只用于与C函数交互的接口程序. 一.可变参数函数

PHP常用文件操作函数和简单实例分析

PHP最常用的文件操作就是读取和写入了,今天就主要讲解一下读取和写入函数,并且做一个页面访问的计数功能,来记录一个页面的访问量. fopen():PHP中没有文件创建函数,创建和打开文件都用fopen()函数,函数的形式为:resource fopen( string filename, string mode ) 参数filename为打开或创建并打开的文件名,参数mode为打开的模式,具体模式如下: fread():PHP中可用于读取文件,函数的形式为:string fread( resou

Python可变参数*args和**kwargs用法实例小结

本文实例讲述了Python可变参数*args和**kwargs用法.分享给大家供大家参考,具体如下: 一句话简单概括:当函数的参数不确定的时候就需要用到*args和**kwargs,前者和后者的区别在于,后者引入了"可变"key的概念,而前者没有key的概念,具体看下面的使用样例和具体的解释即可: #!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:*args 和 **kwargs ''' def test_fun

PHP数组函数array_multisort()用法实例分析

本文实例分析了PHP数组函数array_multisort()用法.分享给大家供大家参考,具体如下: 有时候我们需要对二维数组的某个键的值进行排序,这里就是讨论这个问题.我们可以使用array_multisort()这个函数.array_multisort() 函数对多个数组或多维数组进行排序. 参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能.第一个数组是要排序的主要数组.数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行

python函数形参用法实例分析

本文实例讲述了python函数形参用法.分享给大家供大家参考.具体如下: 函数形参: 函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情.这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值. 参数在函数定义的圆括号对内指定,用逗号分割.当我们调用函数的时候,我们以同样的方式提供值.注意我们使用过的术语--函数中的参数名称为 形参 而你提供给函数调用的值称为 实参 . 使用函数形参: #!/usr/bin/python # Filename

Python lambda函数基本用法实例分析

本文实例讲述了Python lambda函数基本用法.分享给大家供大家参考,具体如下: 这里我们简单学习一下python lambda函数. 首先,看一下python lambda函数的语法,如下: f=lambda [parameter1,parameter2,--]:expression lambda语句中,冒号前是参数,可以有0个或多个,用逗号隔开,冒号右边是返回值.lambda语句构建的其实是一个函数对象. 1>无参数 f=lambda :'python lambda!' >>&

JS回调函数简单易懂的入门实例分析

本文实例讲述了JS回调函数.分享给大家供大家参考,具体如下: 初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数.什么是JS?(点击查看) 下面先看看标准的解释: <script language="javascript"> function SortNumber( obj, func ) // 定义通用排序函数 { // 参数验证,如果第一个参数不是数组或第二个参数不是函数则抛出异常 if( !(obj instanceof Array) || !(f

php魔术函数__call()用法实例分析

本文实例分析了php魔术函数__call()用法.分享给大家供大家参考.具体如下: php魔术函数__call()的介绍,看完下面的实例就明白了: <?php class A{ public $name; function test1($a){ echo "test1111"; } function test2($a){ echo "test2222"; } //当某个对象调用某个方法,而当该方法不存在时,则系统会自动调用__call() function _

Go语言多值替换的HTML模板实例分析

本文实例分析了Go语言多值替换的HTML模板用法.分享给大家供大家参考.具体如下: 这里通过两种方式提供基于HTML模板的多变量值替换.另外附加一个数组迭代的示例. 传入map实现多值替换 复制代码 代码如下: package main import (  "html/template"  "os" ) func main() {  t, _ := template.New("demo").Parse(`{{define "T"

ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析

本文实例讲述了ES6学习笔记之字符串.数组.对象.函数新增知识点.分享给大家供大家参考,具体如下: 1.模板字符串 反引号`` 内用于输入格式化的字符串文本,在``内可以将表达式用${}包含起来 let str=` <!DOCTYPE html> <html lang="en"> <body> <div> <p class="pClass">格式化字符串</p> </div> <