2016-06-09 29 views
-2

code.h這個C++代碼如何讓我調用具有錯誤數量參數的函數?

char* f(int ar1, int arg2, int arg3, char** arg4= NULL); 

code.cpp

char* f(int ar1, int arg2, int arg3, char** arg4) { 
      ... 
} 

other_code.cpp

char* r= f(1,2,3); 

other_cod.cpp調用此函數f 3個指定參數時,但功能有4個ARGS在定義。沒有其他函數名稱爲f。這個調用如何成功?

+7

你明白了什麼[默認參數](http://en.cppreference.com/w/cpp/language/default_arguments)是什麼? – EdChum

回答

0

編譯器這個調用

char* r= f(1,2,3); 

轉換爲

char* r= f(1,2,3, NULL); 

由於聲明指定的最後一個默認值參數。

您可以通過提供任意數量的參數來爲它們提供默認值,從最後一個開始並返回。例如,如果你這樣做

char* f(int ar1 = 1, int arg2 = 2, int arg3 = 3, char** arg4= NULL); 

您可以用任何數量的參數調用f從零到四,和C++會替代默認值缺乏相應的參數,表達所有形式參數。

相關問題