Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggunakan Nilai Lalai dengan Parameter Rujukan Laluan dalam C ?

Bagaimanakah Saya Boleh Menggunakan Nilai Lalai dengan Parameter Rujukan Laluan dalam C ?

DDD
DDDasal
2024-11-27 22:44:15501semak imbas

How Can I Use Default Values with Pass-by-Reference Parameters in C  ?

Melalui Parameter melalui Rujukan dengan Nilai Lalai dalam C

Dalam C , parameter fungsi boleh dilalui oleh nilai dan rujukan. Apabila melalui nilai, salinan nilai parameter dibuat dan salinan ini dihantar ke fungsi. Apabila lulus melalui rujukan, fungsi beroperasi secara langsung pada alamat memori parameter.

Apabila menghantar parameter melalui rujukan, adalah tidak mungkin untuk menentukan nilai lalai dengan cara yang sama seperti yang anda boleh untuk parameter yang diluluskan oleh nilai. Ini kerana nilai lalai dimulakan apabila fungsi ditakrifkan, tetapi parameter rujukan hanya dimulakan apabila fungsi dipanggil dengan argumen yang dihantar masuk.

Untuk menggambarkan, pertimbangkan pengisytiharan fungsi berikut:

virtual const ULONG Write(ULONG &State = 0, bool sequence = true);

Di sini, parameter "State" diisytiharkan sebagai rujukan kepada ULONG dan parameter "jujukan" diisytiharkan sebagai boolean. Walau bagaimanapun, memberikan nilai lalai kepada "State" ("= 0") menyebabkan 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

Ralat ini berlaku kerana rujukan bukan const tidak boleh terikat kepada bukan nilai (iaitu, a ungkapan sementara). Walau bagaimanapun, adalah mungkin untuk menentukan nilai lalai untuk rujukan const:

virtual const ULONG Write(const ULONG &State = 0, bool sequence = true);

Dalam kes ini, parameter "State" ialah rujukan const kepada ULONG dan nilai lalai ("= 0") ialah nilai const. Ini membolehkan fungsi dipanggil tanpa perlu menentukan nilai untuk "Keadaan".

Satu pengecualian kepada peraturan ini ialah apabila menggunakan pembolehubah statik sebagai nilai lalai untuk rujukan bukan const:

static int AVAL = 1;

void f(int &x = AVAL) {
   // stuff
} 

int main() {
     f();       // equivalent to f(AVAL);
}

Dalam contoh ini, parameter "x" ialah rujukan bukan const kepada int dan nilai lalai ("AVAL") ialah pembolehubah statik. Ini membolehkan fungsi dipanggil tanpa perlu menentukan nilai untuk "x". Walau bagaimanapun, teknik ini adalah penggunaan praktikal yang terhad.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Nilai Lalai dengan Parameter Rujukan Laluan dalam C ?. 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