传递可变数量的实参

一、关键点

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

方法: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 << "传递两个实参:
"; 
21     print({1,2});
22     cout << "传递三个实参:
";
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 << "传递两个实参:
"; 
20     print({1,2});
21     cout << "传递三个实参:
";
22     print({1,2,3}); 
23     return 0;  
24 }  
View Code

三、省略符形参

呸。辣鸡!

四、可变参数模板

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