1,不同类型,不同数量
#include <cstdarg>
//不同类型变参:将可变参数从右至左依次压入栈中,头文件 <cstdarg>
//va_list:定义可变参数变量,该变量本质上是一个指针
//为va_list变量绑定最后一个固定参数
//va_arg(ap, int);返回可变参数
//va_end(ap);销毁va_list变量
//注意:该方法极不安全! 例如count个数为5或7个 实际参数个数为6个 就会发生严重错误!!!
//优点在于可以存储不同类型的参数
void variyArg(int count,...)
{
va_list ap;
va_start(ap,count);
cout << "va_list:" << endl;
for (int i = 0;i<count; ++i)
{
cout << va_arg(ap, int);
}
va_end(ap);
}
2.使用c++初始化列表
/应用c++11的初始化列表
//实参必须放在{}中
//只能传入相同类型的参数,但是比较安全
void vararg(initializer_list<int> il)
{
cout << "initializer_list:" << endl;
for (auto n : il)
{
cout << n << endl;
}
}