Der Objektoperator in C++
Der unäre Präfixoperator »*« wird hier Objektoperator genannt.
Ist A die Adresse eines Objektes O, so ist *A das Objekt O.
Daraus folgt:
- &O ist die Adresse des Objektes O, also ist *&O das Objekt O.
main.cpp
#include <iostream>
#include <ostream>
#include <string>int main()
{ auto i { 26 };
::std::cout << *&i << '\n'; }Protokoll
26
Da der komplexer Ausdruck (ein Operatorausdruck) »*&i« für ein Objekt steht, kann er auch auf der linken Seite des Gleichheitszeichen stehen.
main.cpp
#include <iostream>
#include <ostream>
#include <string>using namespace ::std::literals;
int main()
{ auto i { 26 }; *&i = 53;
::std::cout << i << "\n"s; }Protokoll
53
Ein Ausdruck, der ein Objekt angeben kann, wird auch hier auch Objektausdruck genannt. Alles, was auf der linken Seite des Zuweisungsoperators »=« stehen kann, ist ein Objektausdruck.
In den obigen beiden Programmen sind »i« und »*&i« Objektausdrücke. Der Adressausdruck »&i« ist jedoch kein Objektausdruck.
Man sagt auch, daß der Objektoperator »*« seinen Operanden dereferenziere. Daher nennen wir *A auch den Referenten der Adresse A .