Es ist so, dass Sie gezwungen sein werden, die Konsole auf der linken Seite so zu platzieren, wie Gott es beabsichtigt hat! :)
Es hat tatsächlich mit etwas zu tun, das Überlastung des Operators genannt wird. Wenn du gerade C++ lernst, hast du das wahrscheinlich noch nicht behandelt, also füge das ein, was ich unter "Zeug, das ich später bekomme" sagen werde.
C++ lebt auf C. In C <<
und >>
sind nur Bit-Shift-Operatoren. In C++ kann es mehr sein. std:cout << foo
ist NICHT C, es ist C++. Der Grund, warum es C++ ist, liegt darin, dass das Objekt std::cout
den Operator <<
überlädt, um etwas anderes als Bitverschiebung zu bedeuten.
Mit anderen Worten, <<
bedeutet nur senden foo
zu cout
, weil cout
sagte, das ist was es bedeutet. <<
ist in der Tat eine Funktion für die Klasse cout
.
Es ist fast so, als ob Sie sagten std::cout->sendThatToMe(foo)
.
In dieser ganzen Angelegenheit foo
ist nur ein glücklicher Parameter entlang für die Fahrt, die kein Mitspracherecht hat, was <<
bedeutet. Deshalb kannst du es nicht anders machen. Wenn Sie es getan haben würde, als ob Sie diese sagten:
foo->sendMeToThat(std::cout).
die gemacht werden können arbeiten, wenn Sie diese Funktion hinzuzufügen (auch die >>
Betreiber wirklich) zu jedem stinkenden Objekt, das Sie jemals die senden mögen Konsole. Oh, und viel Glück, wenn es mit Primitiven geht.
Also, während ich denke, dass es sehr gute Stil Gründe gibt, die Konsolen-Sachen auf der linken Seite zu behalten, gibt es tatsächlich einen technischen Grund, dass es so sein muss. Das liegt daran, dass Operatoren, die überladen sind, bereits assoziativ sind. Seit sie in den alten C-Tagen benutzt wurden, um Bits zu verschieben. Überladen sie bietet keine Chance, ihre Assoziativität zu ändern.
diesen Code einfügen 'char & operator << (char & dst, std :: istream & src) {src >> dst; Rückkehr dst; } 'in deine und spiele mit' char a; ein
Eine praktische Möglichkeit, sich an den Unterschied zu erinnern, ist, dass der Bediener in die Richtung des Datenflusses zeigt. :) – thedayturns