Können integrierte Standardoperatoren Funktionszeiger haben?
In C können Sie nicht direkt auf Funktionszeiger integrierter Operatoren verweisen, weil Sie stellen eigentlich keine Funktionsobjekte dar. Gemäß dem C 11-Standard sind integrierte Operatoren speziell für die Überlastungsauflösung konzipiert und können nicht für andere Zwecke verwendet werden.
Überwindung der Einschränkung:
So umgehen Dazu können Sie Funktionsobjekte verwenden, die in der Standardbibliothek definiert sind (§20.8). Diese Funktionsobjekte, wie etwa equal_to für Vergleiche, zerfallen in ihrer Funktion „operator()“ in den entsprechenden Operator. Sie können als gültige Argumente für Funktionszeiger dienen.
Zugriff auf Standardklassenoperatoren:
Während integrierte Operatoren nicht direkt zugänglich sind, können Sie Standardbibliotheksoperatoren als verwenden Funktionszeiger. Sie müssen jedoch die entsprechende Vorlageninstanz angeben, um den Compiler zu steuern. Wenn Sie beispielsweise den Operator std::basic_string verwenden möchten, müssen Sie dessen Vorlagentyp explizit wie folgt angeben:
<code class="cpp">typedef std::basic_string<char> string_type; ... std::cout << test_function<string_type>(a, b, &std::operator+) << std::endl;</code>
Schlussfolgerung:
Obwohl integrierte Operatoren aufgrund ihrer einzigartigen Rolle keine direkten Funktionszeiger haben können, können Sie auf ihre Funktionalität über Funktionsobjekte zugreifen, die von der Standardbibliothek bereitgestellt werden, oder indem Sie die erforderlichen Vorlageninstanzen für Standardklassenoperatoren angeben.
Das obige ist der detaillierte Inhalt vonKönnen Sie Funktionszeiger mit integrierten Operatoren in C verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!