可变形参
2023年12月15日 2023年12月15日
可变形参, 即函数的形参个数不定
有两种, 标准库类型initializer_list, 和C语言中也会用到的省略符形参 ...
标准库类型initializer_list
要求全部实参的类型都相同
含有initializer_list形参的函数可以同时拥有其他形参
initializer_list对象中的元素永远是常量值,不可更改
头文件
1#include <initializer_list>
初始化
1initializer_list<T> lst; 2initializer_list<T> lst{a, b, c};
拷贝和赋值
拷贝或赋值一个initializer_list对象不会拷贝列表中的元素;拷贝后,原始列表和副本共享元素
1lst2(lst); 2 3lst2 = lst;
其他操作
- |
---|
list.size() |
lst.begin() |
lst.end() |
1initializer_list<string> ls; 2initializer_list<int> li; 3 4void error_msg(initializer_list<string> il) 5{ 6 for (auto beg = il.begin(); beg != il.end(); ++beg) 7 { 8 cout << *beg << " "; 9 } 10 cout << endl; 11} 12 13if (expected != actual) 14 error_msg({"functionX", expected, actual}); 15else 16 error_msg({"functionX", "okay"});
省略符形参
- 使用C标准库varargs
- 只能出现在形参列表的最后一个位置