Rumah >pembangunan bahagian belakang >C++ >Bolehkah Fungsi C Mempunyai Nilai Lalai untuk Parameter Rujukan Bukan Const?

Bolehkah Fungsi C Mempunyai Nilai Lalai untuk Parameter Rujukan Bukan Const?

Susan Sarandon
Susan Sarandonasal
2024-11-29 17:54:11751semak imbas

Can C   Functions Have Default Values for Non-Const Reference Parameters?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn