C でデフォルト値を使用してパラメータを参照渡しする
C では、パラメータを参照渡しする場合、デフォルト値を割り当てることはできませんパラメータに値を設定します。これにより、参照パラメータのデフォルト値を使用して関数を宣言しようとするとエラーが発生します。たとえば、次のコードはエラーになります:
virtual const ULONG Write(ULONG &State = 0, bool sequence = true);
エラーが発生しました:
error C2440: 'default argument' : cannot convert from 'const int' to 'unsigned long &' A reference that is not to 'const' cannot be bound to a non-lvalue
解決策
デフォルト値は非定数参照ではなく、定数参照に割り当てられます。これは、一時値 (デフォルト値など) を非 const 参照にバインドできないという C の制限によるものです。
回避策として、実際のインスタンスをデフォルト値として使用できます。
static int AVAL = 1; void f( int &x = AVAL ) { // stuff } int main() { f(); // equivalent to f(AVAL); }
ただし、このアプローチの実際的な適用可能性は限られています。
以上がC 関数が非 Const 参照パラメータのデフォルト値を持てないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。