Heim > Backend-Entwicklung > C++ > Hauptteil

Können Sie das machen?

Linda Hamilton
Freigeben: 2024-10-27 05:39:02
Original
289 Leute haben es durchsucht

 Can You Make the `

Überladung virtueller Operatoren: << Virtuell

Versuch, ein virtuelles << Der Operator führt aufgrund der Natur freier Funktionen zu Compilerfehlern. Um diese Einschränkung zu überwinden und virtuelles Verhalten für benutzerdefinierte Operatorüberladungen zu ermöglichen, ist ein alternativer Ansatz erforderlich.

Umwandeln des Operators in eine Mitgliedsfunktion

Der Schlüssel zur Einführung von virtuellem Verhalten liegt in der Umwandlung des << Operator von einer freien Funktion zu einer Mitgliedsfunktion der Klasse. Wenn Sie dies jedoch direkt tun würden, würde sich die Parameterreihenfolge umkehren, was zu einer falschen Operandenplatzierung führen würde.

Einführung in die Indirektion: Die Print()-Funktion

Um dieses Problem zu lösen, müssen Sie die Grundlagen Der Satz des Software Engineering schlägt das Hinzufügen einer Zwischenschicht der Indirektion vor. Anstatt << virtual, eine virtuelle print()-Funktion wird der Klasse hinzugefügt:

<code class="cpp">class MyClass {
public:
    virtual void print(ostream& where) const;
};</code>
Nach dem Login kopieren

Redirecting << to print()

Das << Die freie Funktion wird dann neu definiert, um ihr Verhalten an print() zu delegieren:

<code class="cpp">ostream& operator<<(ostream& out, const MyClass& mc) {
    mc.print(out);
    return out;
}</code>
Nach dem Login kopieren

Virtuelles Verhalten erreichen

Mit diesem Setup wird das << Der Operator behält die korrekte Parameterreihenfolge bei und ermöglicht gleichzeitig Unterklassen, die print()-Methode zu überschreiben und ihr Ausgabeverhalten anzupassen. Dies ermöglicht effektiv virtuelles Verhalten für die << Operator, der dynamischen Polymorphismus beim Ausgabe-Streaming ermöglicht.

Das obige ist der detaillierte Inhalt vonKönnen Sie das machen?. 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!