Heim > Backend-Entwicklung > C++ > Hauptteil

Warum gibt „cout' „1' aus, wenn ein Funktionszeiger ohne Klammern verwendet wird?

Susan Sarandon
Freigeben: 2024-10-26 09:33:30
Original
1003 Leute haben es durchsucht

Why Does

Warum gibt „cout eine Funktion aus, ohne sie aufzurufen (nicht f(), sondern f;). 1 immer drucken?“

Hier Code versucht der Code, eine Funktion namens pr ohne die Verwendung von Klammern aufzurufen. Dies ist jedoch kein eigentlicher Aufruf der Funktion. Stattdessen wird der Funktionszeiger an die cout-Funktion übergeben. Wenn der Funktionszeiger implizit in einen Bool-Wert konvertiert wird, wird er als wahr ausgewertet. Da true in C äquivalent zu 1 ist, ist die Ausgabe immer 1.

Zur Verdeutlichung: Die folgenden Zeilen aus dem bereitgestellten Code rufen nicht die PR-Funktion auf:

<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>
Nach dem Login kopieren

Um wirklich aufzurufen Für die pr-Funktion müssten Sie Klammern wie pr() verwenden.

Dieses Verhalten ergibt sich aus der Tatsache, dass Funktionszeiger implizit in bool konvertierbar sind. In C 11 ist es möglich, den Operator << für Funktionszeiger, um eine informativere Ausgabe bereitzustellen. Dies würde jedoch bei überladenen Funktionen oder Funktionsvorlagen immer noch nicht funktionieren, ohne die gewünschte Überladung explizit anzugeben (normalerweise durch eine Umwandlung).

Das obige ist der detaillierte Inhalt vonWarum gibt „cout' „1' aus, wenn ein Funktionszeiger ohne Klammern verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!