Nilai Lalai untuk Parameter Dirujuk dalam C
Apabila menghantar parameter melalui rujukan dalam C , bolehkah anda menentukan nilai lalai untuknya?
Pertimbangkan fungsi berikut pengisytiharan:
virtual const ULONG Write(ULONG &State = 0, bool sequence = true);
Percubaan untuk menyusun kod ini mengakibatkan ralat:
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
Jawapan
Nilai lalai hanya boleh diberikan kepada rujukan tetap, bukan rujukan tidak tetap. Ini kerana C melarang mengikat sementara (dalam kes ini, nilai lalai) kepada rujukan bukan tetap.
Untuk mengatasi kekangan ini, anda boleh menggunakan contoh sebenar sebagai nilai lalai:
static int AVAL = 1; void f( int &x = AVAL ) { // stuff } int main() { f(); // equivalent to f(AVAL); }
Walau bagaimanapun, kaedah ini mempunyai kebolehgunaan praktikal yang terhad.
Atas ialah kandungan terperinci Bolehkah Fungsi C Mempunyai Nilai Lalai untuk Parameter Rujukan Bukan Const?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!