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

Susan Sarandon
Lepaskan: 2024-10-26 09:33:30
asal
1003 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!