Parameter als Referenz übergeben unnötig?
-
Nexus schrieb:
"Const reference" hingegen ist völlig angebracht, sogar der C++-Standard verwendet diesen Begriff. Und er bedeutet auch nicht "konstante Referenz", das wäre nämlich "constant reference".
"constant reference" kann man aber genauso mit konstantenreferenz übersetzen, was genau dasselbe bedeutet, wie "const-reference", nämlich eine referenz auf eine konstante.
ich stimme dir schon zu, dass "konstante referenz" nicht eindeutig ist, eine konstanten-referenz wäre der eindeutige begriff; aber weil eine referenz immer auf das gleiche objekt verweist (und für diese definition keine wortspiele braucht), ist es absolut legitim, zu sagen "konstante referenz", wenn damit eine konstantenreferenz gemeint ist, weil aus dem kontext eindeutig klar wird, was gemeint ist.
-
Schön, dass du mit "Konstantenreferenz" noch einen weiteren Begriff einführst, den erst recht niemand versteht :p
Wie gesagt, "const reference" ist der offizielle Ausdruck. Auf deutsch würde ich ihn mit "Const-Referenz" übersetzen. Er bezieht sich auf das Schlüsselwort
const, was im Deutschen ebenfallsconstist. Es gibt sogar die Typdefinitionconst_referencebei Containern, die normalerweiseconst T&entspricht. Genauso wie beiconst_iterator, das ist ja auch kein konstanter Iterator. Gleiches gilt fürconst_pointer. Wieso sollte es bei Referenzen plötzlich anders sein?"Konstante Referenz" ist gerade für Anfänger unnötig verwirrend, weil der wörtliche Begriff 1. unnötige Information enthält (Referenzen sind immer konstant), 2. wichtige Information weglässt (ist das referenzierte Objekt konstant?) und 3. den Eindruck macht, dass es auch nicht-konstante Referenzen gäbe, was einfach nur falsch ist.
Während es sogar kürzer ist, "const reference" oder "Const-Referenz" zu schreiben, entspricht es auch dem im C++-Standard verwendeten Begriff und ist eindeutig. Also einigen wir uns doch bitte darauf

-
Nexus schrieb:
Während es sogar kürzer ist, "const reference" oder "Const-Referenz" zu schreiben, entspricht es auch dem im C++-Standard verwendeten Begriff und ist eindeutig. Also einigen wir uns doch bitte darauf

gut, ich spreche immer gut auf das argument der kürze an

-
oops schrieb:
in der form
T const &ist die lesart einfach verkehrt: referenz auf const T.
Wenn man Typen von Rechts nach Links liest, ist das absolut legitim und korrekt so.
-
das "verkehrt" war nicht abwertend gemeint. das sollte einfach heißen, dass man, wenn man das so schreibt, konsistenter lesen kann (nämlich von rechts nach links (und war eine anspielung auf den anderen thread, wo es auch genau darum geht) - wenn man schreibt
const T &ist das aber sicher "üblicher" (iSv mehr leute machen das so) und man kann es immer noch von rechts nach links lesen: referenz auf eine T-konstante. ("reference to a T-typed constant")
-
oops schrieb:
ist das aber sicher "üblicher" (iSv mehr leute machen das so)
Kannst du das belegen? Sprich: Statistiken über nennenswerte Projekte, die belegen, dass die "const T&" Schreibweise häufiger vorkommt als die "T const&"?
Mal abgesehen vom nicht vorhandenen Komparativ von "üblich" sollte so eine Statistik im Sinne von "üblich" natürlich eine signifikanten Unterschied zeigen, 55% zu 45% wäre z.B nicht wirklich signifikant.
So oder so sollte man als Entwickler beide Schreibweisen lesen können, eben weil sie beide begründet sind und beide vorkommen.
-
pumuckl schrieb:
beide begründet
Ich hätte dann gerne eine Begründung für "const T".
-
Nexus: Ich finde den Begriff Konstantenreferenz eigentlich sehr gut, denn er füllt genau die Lücke, die es ja anscheinend gegeben hat.
T const& ist ja nichts anderes als eine Referenz auf eine Konstante
Konstante Referenz ist semantisch nicht sinnvoll, dem stimme ich zu.
pumuckl: Diese Methode zu entscheiden, was besser ist, finde ich nicht besonders sinnvoll, da sie auf eine positive Rückkopplung hinausläuft.
Zumindest mich ärgert es, dass oftmals die bekannteste, aber nicht die beste, Lösung genommen wird.
-
int i = 42; int const& r = i; // Referenz auf Konstante?
-
C++ Primer -> "const T"
Die C++-Programmiersprache -> "const T"
Damit wären manche Forenmitglieder klüger und besser als Stroustrup und Lipman zusammen.
Wenn man nicht gerade das Arabische zur Muttersprache hat, ist man es gewohnt, von links nach rechts zu schreiben/lesen. Für nicht-C++-Muttersprachler ist es deshalb einfacher, Typen von links nach rechts zu entschlüsseln. Das sollte mMn. als Argument für "const T" (konstantes T) reichen. Aber wie vieles ist es Gewohnheit, und wenn erst einmal alle Bücher, alle Tutorials und alle C++-Projekte korrigiert sind, werden auch sicherlich alle brav "T const" schreiben...
-
Wenn du mit der Sprachkeule kommen möchtest, solltest du auch etwas weiter denken, finde ich.
Nimm zum Beispiel die französische Sprache, dort stehen Adjektive zumeist auch nach dem Substantiv, auf das sie ich beziehen, man muss also nicht bis zum Arabischen gehen, um andere Wortstellungen zu sehen
(const hat meiner Meinung nach Ähnlichkeit zu Adjektiven)
(Außerdem hilft es, ganz schematisch davon auszugehen, dass das wichtigste links steht, und dann die Attribute kommen, die den Typ näher bestimmen, anstatt zu versuchen, die Typenangaben in natürliche Sprachen zu übersetzen)