Überladen des Operators für Pre- und Post-Inkrementierung
Diese Untersuchung befasst sich mit der Machbarkeit der Überladung des Operators, um sowohl Pre-Inkrementierung als auch Post-Inkrementierung zu ermöglichen. Inkrementoperationen. Beim Vorinkrementieren (SampleObject) wird das Objekt inkrementiert, bevor sein Wert zurückgegeben wird. Post-Increment ( SampleObject) erhöht das Objekt und gibt seinen ursprünglichen Wert zurück.
Die Implementierung dieser Vorgänge durch Operatorüberladung erfordert ein Verständnis der Einschränkungen von Rückgabetypen. Auch wenn eine Überladung basierend auf Rückgabetypen zulässig erscheint, stellt sie ein Mehrdeutigkeitsproblem dar. Durch das Überladen von Operatoren wird die Funktionalität integrierter Typen auf benutzerdefinierte Typen erweitert. Es bleibt jedoch unklar, warum Pre- und Post-Inkrement für benutzerdefinierte Typen nicht gleichzeitig existieren können.
Um diese Mehrdeutigkeit aufzulösen, verwendet der Postfix-Inkrementoperator einen Dummy-int-Parameter:
// Prefix
Sample& operator ()
{
// Increment logic on this instance; return reference to it.
return *this;
}
// Postfix
Sample operator (int)
{
Sample tmp(*this);
operator (); // Prefix-increment this instance
return tmp; // Return value before increment
}
Bei diesem Ansatz gibt der Vorinkrementoperator einen Verweis auf das inkrementierte Objekt zurück, während der Postinkrementoperator eine Kopie des Objekts vor der Inkrementierungsoperation zurückgibt.
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