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++中可以接受任意多个参数的函数定义方法(详解)全部内容了,希望大家多多支持我们~

(0)

相关推荐

  • 浅析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++中可变参数的用法详细解析

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

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

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

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

    能够接受任意多个参数的函数,可以利用重载来实现.这种函数的执行过程类似于递归调用,所以必须要有递归终止条件. #include <iostream> #include <bitset> void print() {} // 递归终止条件.这是必需的. template<typename Type, typename... Types> void print(const Type& arg, const Types&... args) { std::cou

  • C++中使用function和bind绑定类成员函数的方法详解

    定义一个普通的类 class Test1{ public: void fun(int val){ cout<<"hello world "<<val<<endl; } }; 开始第一个测试 int main(){ Test1 t; function<void(int)> pf = std::bind(&Test1::fun,t,2); pf(4); // return 0; } 输出的值是2,说明pf传进去的4并没有什么用,在bi

  • JS求1到任意数之间的所有质数的方法详解

    何为质数: 只能被1 和 自身 整除的数; 方法: 利用js中求模, 看是否有余数. ---> 3%2 = 1; 5%2 = 3......... 代码如下: function test (n) { // 判断一个数是否能被自身小的正整数(除开1和自身)整除.如果能整除则不是质数,否则反之. for(var k = 2;k < n;k++) { if(n % k === 0) { return false; } } return ture; } 以上方法是为判断一个数是否为质数; 那如何判断1

  • python解析命令行参数的三种方法详解

    这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法:sys.argv.argparse解析.getopt解析 方法一:sys.argv -- 命令行执行:python test_命令行传参.py 1,2,3 1000 # test_命令行传参.py import sys def para_input(): print(len(sys.argv)) #

  • Python实现解析参数的三种方法详解

    目录 先决条件 使用 argparse 使用 JSON 文件 使用 YAML 文件 最后的想法 今天我们分享的主要目的就是通过在 Python 中使用命令行和配置文件来提高代码的效率 Let's go! 我们以机器学习当中的调参过程来进行实践,有三种方式可供选择.第一个选项是使用 argparse,它是一个流行的 Python 模块,专门用于命令行解析:另一种方法是读取 JSON 文件,我们可以在其中放置所有超参数:第三种也是鲜为人知的方法是使用 YAML 文件!好奇吗,让我们开始吧! 先决条件

  • 对Python中的条件判断、循环以及循环的终止方法详解

    条件判断 条件语句是用来判断给定条件是否满足,并根据判断所得结果从而决定所要执行的操作,通常的逻辑思路如下图: 单次判断 形式 if <判断条件>: <执行> else: <执行> 例子 age = int(input("输入你的年龄:")) if age < 18: print("未成年") else: print("已成年") 多次判断 形式 if <判断条件1>: <执行1>

  • MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解

    在MySQL中可以使用IF().IFNULL().NULLIF().ISNULL()函数进行流程的控制. 1.IF()函数的使用 IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值. SELECT IF(TRUE,'A','B'); -- 输出结果:A SELECT IF(FALSE,'A','B'); -- 输出结果:B 2.IFNULL()函数的使用 IFNULL(expr1,expr2),如果

  • Spring根据URL参数进行路由的方法详解

    前言 本文主要介绍了关于Spring根据URL参数进行路由的相关内容,分享出来供大家参考学习价值,下面来一起看看详细的介绍吧. 发现问题 最近在写接口的时候发现一个问题,就是两个REST接口的URL的path部分是一样的,根据query传入不同的参数来区分. 比如S3普通上传接口是是: PUT /{bucketname}/{ objectname} 分块上传的接口是: PUT /{bucketname}/{objectname}?partNumber={partNumber}&uploadId=

  • Java Spring Controller 获取请求参数的几种方法详解

    Java Spring Controller 获取请求参数的几种方法  1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"="application/x-www-form-urlencoded",可用post提交 url形式:http://localhost:8080/SSMDemo/demo/addUser1?username=lixiaoxi&password=1

  • Android开发中使用Intent打开第三方应用及验证可用性的方法详解

    本文实例讲述了Android开发中使用Intent打开第三方应用及验证可用性的方法.分享给大家供大家参考,具体如下: Android中提供了Intent机制来协助应用间的交互与通讯.可作为不同组件之间通讯的媒介完成应用之间的交互.这里讨论一下针对Intent打开第三方应用的相关操作. 本文主要记录: ① 使用 Intent 打开第三方应用或指定 Activity 的三种方式 ② 使用上面三种方式时分别如何判断该 Intent 能否被解析 ③ 判断该 Intent 能否被解析中可能出现的遗漏 基础

随机推荐