码迷,mamicode.com
首页 > 其他好文 > 详细

传递可变数量的实参

时间:2017-10-13 12:39:47      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:std   int   一个   常量   style   省略符   cout   分享   目的   

一、关键点

目的:一个函数,可以处理不同数量实参

方法:initializer_list形参、可变参数模板、省略符形参

 

二、initializer_list形参

适用于:可变数量的实参部分的类型相同

简介:initializer_list是一种标准库类型,用于表示某种特定类型的值的数组

特点:模板类型,该类型的对象中的元素是常量值(我们无法改变该类型对象中元素的值)

注意:要向该形参中传递一个值的序列,必须把序列放在一对花括号中

示例:

技术分享
 1 #include <iostream>
 2 #include <vector>
 3 #include <cctype>
 4 #include <string>
 5 #include <initializer_list>
 6 
 7 using namespace std; 
 8 
 9 void print(initializer_list<int> a)
10 {
11     for (auto i : a)
12         cout << i << " ";
13     cout << endl;
14 }
15 
16  
17   
18 int main()
19 {  
20     cout << "传递两个实参:\n"; 
21     print({1,2});
22     cout << "传递三个实参:\n";
23     print({1,2,3}); 
24     return 0;  
25 }  
View Code

补充:initializer_list类型不仅仅可以在形参部分使用,它作为一个类,自然有属于自己的成员函数。

技术分享
 1 #include <iostream>
 2 #include <vector>
 3 #include <cctype>
 4 #include <string>
 5 #include <initializer_list>
 6 
 7 using namespace std; 
 8 
 9 void print(initializer_list<int> a)
10 {
11     cout << "此次传来" << a.size() << "个可变参数" << endl;
12     for (auto it = a.begin(); it != a.end(); it++)
13         cout << *it << " ";
14     cout << endl;
15 }
16   
17 int main()
18 {  
19     cout << "传递两个实参:\n"; 
20     print({1,2});
21     cout << "传递三个实参:\n";
22     print({1,2,3}); 
23     return 0;  
24 }  
View Code

 

 

三、省略符形参

呸。辣鸡!

 

四、可变参数模板

传递可变数量的实参

标签:std   int   一个   常量   style   省略符   cout   分享   目的   

原文地址:http://www.cnblogs.com/xzxl/p/7660016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!