Die Verbundzuweisung in C++ (Die Verbundzuweisung in C++), Lektion, Seite 721549
https://www.purl.org/stefan_ram/pub/c++_verbundzuweisung_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Verbundzuweisungen in C++ 

Relative Zuweisungen

Durch eine Zuweisung an ein Objekt wird der bisherige Wert des Objektes überschrieben. Der bisherige Wert beeinflußt den Wert nach der Zuweisung also nicht.

Schon in der Umgangssprache verwendet man aber oft Formulierungen für relative Typen von Wertveränderung, etwa, wenn man sagt „mein Kontostand hat sich um 1002 Euro erhöht“ oder „mein Alter hat sich seitdem verdoppelt“.

In C++ gibt es Operatoren für solche relativen Änderungen von Werten. Wenn eine Variable "x" um 1002 erhöht werden soll, so läßt sich dies beispielsweise durch den Wirkausdruck "x += 1002" schreiben. Dieser ist eine Abkürzung für den Wirkausdruck "x = x + 1002" mit dem Unterschied, daß bei der relativen Zuweisung "x += 1002" der Teilausdruck "x" nur einmal ausgewertet wird. Wegen der damit einhergehenden höheren Effizienz und der kompakteren Formulierung, soll die relative Zuweisung wann immer möglich bevorzugt verwendet werden.

Als Abkürzung für Ausdrücke der Form "L  = L  + R " dient die Zuweisung "L  += R " mit dem speziellen Operator "+=", bei der der Ausdruck "L " nur einmal ausgewertet wird. Auch für einige andere binäre Operatoren sind solche Kurzformen der Zuweisung definiert. Die verschiedenen Zuweisungsoperatoren können der folgenden Produktion entnommen werden.

vereinfachte Syntax

Ausdruck
.----------. .--. .--------.
--->| Ausdruck |--->( += )-->|Ausdruck|--->
'----------' '--' '--------'

Ausdruck
.----------. .--. .--------.
--->| Ausdruck |--->( -= )-->|Ausdruck|--->
'----------' '--' '--------'

Ausdruck
.----------. .--. .--------.
--->| Ausdruck |--->( *= )-->|Ausdruck|--->
'----------' '--' '--------'

Ausdruck
.----------. .--. .--------.
--->| Ausdruck |--->( /= )-->|Ausdruck|--->
'----------' '--' '--------'

relativ.cpp
#include <iostream> 
#include <ostream>
int main() 
{ auto i = 0;  
i += 1; 
std::cout <<( i += 1 )<< '\n'; 
std::cout << i << '\n'; }

std::cout

2

Effizienz

Bei der Berechnung von a+(b+c) mit Zeichenfolgen müssen zusätzliche Zeichenfolgen-Objekte für Zwischenergebnisse angelegt werden und Daten müssen in diese kopiert werden. In bestimmten Fällen kann es effizienter sein, solche Berechnungen in eine Folge von Schritten mit »+=« aufzuteilen, falls im konkreten Einzelfalls dafür nicht ebenfalls neue Variablen für Zwischenergebnisse angelegt werden müssen.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main()
{ auto const a { "alpha"s };
auto const b { "beta"s };
auto const c { "gamma"s };
auto const result { a + b + c };
::std::cout << result << "\n"s; }

Protokoll
alphabetagamma

Das folgende Programm könnte effizienter sein:

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main()
{ auto result { "alpha"s };
auto const b { "beta"s };
auto const c { "gamma"s };
result += b;
result += c;
::std::cout << result << "\n"s; }

Protokoll
alphabetagamma

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721549 stefan_ram:721549 Die Verbundzuweisung in C++ Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721549, slrprddef721549, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/c++_verbundzuweisung_de