我對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