Bearbeiten einer Funktion ohne Aufruf: Das Geheimnis lüften
Stellen Sie sich Folgendes vor: Sie programmieren weg und anstatt eine Funktion mit Klammern aufzurufen, Sie drucken einfach den Namen aus. Überraschenderweise ist das Ergebnis immer 1. Dieser unkonventionelle Ansatz lässt Sie ratlos zurück, sowohl über die Einsen als auch über das Fehlen des erwarteten Funktionszeigers.
Lassen Sie uns in die Feinheiten Ihres Codes eintauchen:
#include
using namespace std;
void pr()
{
cout Entgegen Ihrer Absicht rufen Sie die Funktion pr in den cout
Um Ihr Verständnis zu verbessern, sollten Sie vor dem Drucken die Verwendung von cout
Während C 11 eine elegante Lösung bietet:
template
std::ostream & operatorMit dieser Überladung können Sie Funktionszeiger beliebiger Arität drucken und Informationen wie die Adresse des Funktionszeigers und die Anzahl seiner Argumente anzeigen.
Da haben Sie es also: Die rätselhaften Einsen sind Kein bloßer Zufall, sondern das Ergebnis einer impliziten Typkonvertierung. Das Verständnis dieses Verhaltens ist entscheidend, um unerwartete Ergebnisse zu vermeiden und robusteren Code zu erstellen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3