演算子の中で、多重定義時にデフォルト引数を持つことができるのは、関数呼び出し演 算子と演算子 new だけです。
void f(int a, int b = 2, int c = 3); // trailing defaults
void g(int a = 1, int b = 2, int c); // error, leading defaults
void h(int a, int b = 3, int c); // error, default in middle
void f(int a, int b, int c=1); // valid
void f(int a, int b=1, int c); // valid, add another default
void f(int a=1, int b, int c); // valid, add another default
void f(int a=1, int b=1, int c=1); // error, redefined defaults
関数宣言または定義では、いかなるデフォルト引数値でも与えることができます。 デフォルト引数値に続くパラメーター・リストの中のパラメーターはすべて、 関数の、この宣言または前の宣言に指定されたデフォルト引数値を持っていなければなりません。
void f(int a)
{
int b=4;
void g(int c=a); // Local variable "a" cannot be used here
void h(int d=b); // Local variable "b" cannot be used here
}