パラメーターを参照によって渡す場合、通常はデフォルト値を指定することはできません。ただし、定数参照については、このルールには例外があります。
次の関数宣言を考えてみましょう:
virtual const ULONG Write(ULONG &State = 0, bool sequence = true);
C では一時的な値 (次のような) が許可されないため、このコードはエラーになります。デフォルト値の 0) は非定数参照にバインドされます。
定数の解決策参照
定数参照の場合、デフォルト値を指定できます。これは、コンパイラが参照が変更されないことを保証できるためです。
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 中国語 Web サイトの他の関連記事を参照してください。