Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah \"cout\" Mencetak \"1\" Apabila Penunjuk Fungsi Digunakan Tanpa Tanda Kurung?

Mengapakah \"cout\" Mencetak \"1\" Apabila Penunjuk Fungsi Digunakan Tanpa Tanda Kurung?

Susan Sarandon
Susan Sarandonasal
2024-10-26 09:33:301004semak imbas

Why Does

Mengapa "menghentikan fungsi tanpa memanggilnya (bukan f() tetapi f;). Cetak 1 Sentiasa?"

Dalam ini kod, kod cuba "memanggil" fungsi bernama pr tanpa menggunakan kurungan. Walau bagaimanapun, ini sebenarnya tidak memanggil fungsi. Sebaliknya, ia menghantar penuding fungsi kepada fungsi cout. Apabila penuding fungsi secara tersirat ditukar kepada nilai bool, ia dinilai sebagai benar. Memandangkan true bersamaan dengan 1 dalam C , output sentiasa 1.

Untuk menjelaskan, baris berikut daripada kod yang disediakan tidak menggunakan fungsi pr:

<code class="cpp">pr;
cout << pr; // output: 1
cout << *pr; // output: 1  (dereferencing the function pointer, which is still true)
cout << &pr; // output: 1 (address of the function, which is a non-zero value)</code>

Untuk benar-benar memanggil fungsi pr, anda perlu menggunakan kurungan seperti pr().

Tingkah laku ini berpunca daripada fakta bahawa penunjuk fungsi boleh ditukar secara tersirat kepada bool. Dalam C 11, adalah mungkin untuk membebankan operator<< untuk penunjuk fungsi untuk memberikan output yang lebih bermaklumat. Walau bagaimanapun, ini masih tidak akan berfungsi untuk fungsi terlampau beban atau templat fungsi tanpa menyatakan secara eksplisit beban yang diingini (biasanya melalui cast).

Atas ialah kandungan terperinci Mengapakah \"cout\" Mencetak \"1\" Apabila Penunjuk Fungsi Digunakan Tanpa Tanda Kurung?. 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