透過引用傳遞參數時,通常無法提供預設值。但是,對於常數引用,此規則有一個例外。
考慮以下函數宣告:
virtual const ULONG Write(ULONG &State = 0, bool sequence = true);
此程式碼將導致錯誤,因為 C 不允許臨時值(例如預設值 0) 綁定到非常量參考。
Constant 的解法引用
對於常數引用,可以提供預設值。這是因為編譯器可以保證引用不會被修改。
virtual const ULONG Read(const ULONG &State = 0, bool sequence = true);
非恆定引用的解決方法
雖然預設值不能分配給非恆定引用-const 引用,有一個使用靜態實例的解決方法:
static int AVAL = 1; void f( int &x = AVAL ) { // stuff }
現在可以使用函數f 來呼叫或不帶參數,不提供參數時使用預設值AVAL。然而,這種方法的實際用途有限。
以上是C 引用可以有預設參數值嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!