Funktionszeiger bieten eine Möglichkeit, auf bestimmte Elemente zu verweisen Operatorfunktionen. Für integrierte Standardoperatoren ist dieser Ansatz jedoch möglicherweise nicht einfach. Dieser Artikel befasst sich mit den Gründen für diese Einschränkung und untersucht alternative Lösungen, um eine ähnliche Funktionalität zu erreichen.
Gemäß dem C-Standard (13.6/ 1) Integrierte Operatoren sind keine regulären Operatorfunktionen und können daher nicht über Funktionszeiger verfügen, die auf sie verweisen. Sie beteiligen sich ausschließlich an der Überlastungsauflösung, ohne einem anderen Zweck zu dienen.
Um diese Einschränkung zu überwinden, führt der C-Standard Funktionsobjekte ein, die eine analoge Funktionalität zu integrierten Funktionen bieten Operatoren durch Vorlagenobjekte. Für Vergleiche werden beispielsweise Funktionsobjekte wie equal_to, great und less_equal definiert. Diese Objekte können als Funktionszeigerargumente verwendet werden.
Im bereitgestellten Codeausschnitt besteht das Ziel darin, zwei Ganzzahlen innerhalb einer Vorlagenklasse zu vergleichen. Mithilfe der Funktionsobjekttechnik kann dies wie folgt erreicht werden:
<code class="cpp">class MyAction { bool operator()() { if (fnCompare_(arg0_, arg1_)) { // do this } else { // do s.th. else } } };</code>
Hier kann fnCompare_ ein Funktionsobjekt wie std::equal_to
Zusätzlich zu Funktionsobjekten können auch Standardbibliotheksoperatoren als Funktionszeiger verwendet werden. Es muss jedoch auf die jeweilige Instanz der Vorlage verwiesen werden. Zum Beispiel:
<code class="cpp">std::basic_string<char> a("test"), b("test2"); std::cout << test_function<std::basic_string<char>>(a, b, &std::operator+);</code>
Während Funktionszeiger für integrierte Standardoperatoren nicht direkt verfügbar sind, ermöglichen die alternativen Lösungen, die Funktionsobjekte und Standardklassentypoperatoren bieten, eine gleichwertige Funktionalität. Diese Alternativen ermöglichen die Verwendung spezifischer Standardoperatoren als Funktionszeiger und beseitigen so die Einschränkungen, die durch integrierte Operatoren entstehen.
Das obige ist der detaillierte Inhalt von## Können Sie Funktionszeiger für integrierte C-Operatoren erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!