我对C++并不陌生,在可变参数传递中我有一个疑问。正如我在下面的示例代码中提到的(此代码完全不起作用,只是为了解我的问题,我像这样构建它),我有两个函数func,带有1个参数和2个参数(参数重载)。我在调用main函数,然后检查是否需要调用2个参数或1个参数。这是问题,因为我知道我可以在各自的else if语句中调用两个函数,但我很想知道我是否只能使用一个函数进行管理。 (在下面的代码我传递字符串不是整数,正如我之前提到的,这只是为别人理解的目的。C++中的动态函数参数可能吗?
#include<iostream.h>
#include <string>
void func(int, int);
void func(int);
void main()
{
int a, b,in;
cout << "Enter the 2 for 2 arg, 1 for 1 arg\n";
cin << in;
if (in == 2)
{
string pass = "a,b";
}
elseif (in == 1)
{
string pass = "a";
}
else
{
return 0;
}
func(pass);
cout<<"In main\n"<<endl;
}
void func(int iNum1)
{
cout<<"In func1 "<<iNum1<<endl;
}
void func(int iNum1, int iNum2)
{
cout<<"In func2 "<<iNum1<<" "<<iNum2<<endl;
}
你也可以是米通过执行'void func(int iNum1,int iNum2 = 0)',2参数func的iNum2有一个默认值。 – Asha
@阿莎:我认为默认值不会达到他的目的。 它总是调用void func(int,int),但从来没有func(int)。 –
编译器在编译时需要知道函数参数的数量来选择合适的函数超载。所以你的问题的答案通常是“否”,在C++中没有“动态参数”这样的事情。但是,您可以像@ozox建议的那样传递参数或任何其他“动态”结构的向量。 – Mikhail