預設實參的理解

2021-07-25 04:23:50 字數 475 閱讀 2878

一直受預設實參的困擾,可能還是自己太懶,查詢資料得出結論:

將預設實參放在函式的宣告中,並且在函式定義中沒有預設實參!也就是說,函式實參只存在於宣告中.

假定有三個檔案,分別為a.h, a.cpp, main.cpp

class a

#includevoid a::output(char c = 'c')

{std::cout<

這段**將通不過編譯。編譯器報錯為output方法呼叫0個引數。

具體原因如下:

當程式在main()方法中呼叫output方法時,該方法僅有宣告是可見的。而顯然,該方法被宣告為接受乙個字元型引數,無返回。故預設實參呼叫output方法是非法的。

原因是因為書上說的:在乙個檔案(

準確的說,是乙個作用域

)中只能為乙個形參指定預設實參一次。當編譯的時候,標頭檔案會和原始檔結合,這時,就會出現多次指定預設形參的情況.

c 預設實參

最近在看關於函式的一部分,其中有這兩句話很吸引我,一是 既可以在函式宣告中也可以在函式定義中指定預設實參,但是在乙個檔案中,只能為乙個形參指定預設實參一次 二是 如果在函式定義的形參表中提供預設實參,那麼只有在包含該函式定義的原始檔中呼叫該函式時,預設實參才是有效的。細細一想才明白這句話的含義,於是...

C 預設實參

預設實參就是函式裡引數的預設值,但是c 使用預設實參也不是隨意的,需要遵守一定的順序規則。void set string name niulei int age 24,string man 通過這就是預設實參 void set string name niulei int age,string ma...

預設實參,constexpr函式

我們使用string物件表示視窗內容時,希望視窗的高,寬等都有乙個預設值。但同時允許這些引數自由指定與預設不同的值,此時可以定義成如下形式 typedef string size type sz string screen sz ht 24,sz wid 80,char backgrnd 引用時,如...