參考:http://blog.csdn.net/sailor_8318/article/details/3348383
聲明是用戶可以看到的部分,客戶非常信任地使用這個特性,希望得到一定的結果,但是你在實現里使用了不同的缺省值,那么將是災難性的。因此編譯器禁止聲明和定義時同時定義缺省參數值。
類的成員函數的參數表在聲明時默認參數位于參數表右部,如int fn(int a,int b=0,int c=5)之類的,但在它定義的時候則不能加默認參數,只能寫int fn(int a,int b,int c);
若聲明時沒有定義缺省參數值,那么在定義成員函數時可以定義缺省參數值。但這種情況通常用戶是看不見的,因此應避免。
對于非類中的函數,在函數聲明中定義默認參數的另外一個好處時,可以利用聲明來隨意更改默認參數的值。