000
09.12.2009, 21:23 Uhr
Prog
|
Hi, ich hab gerade mal wieder gelesen, das nach dem aktuellen Entwurf für C++0x einige Methoden mit konstanter Überladung zusätzlich nen Namen mit führendem 'c' spendiert bekommen haben. Insbesondere gibt es z. B. für std::vector
C++: |
iterator begin(); const_iterator begin() const; const_iterator cbegin() const; // äquivalent zu begin()const
|
Für andere Funktionen wie etwa front() oder data() gibt es diese zusätzlichen "Präfix-"Varianten nicht.
Ich bin nun am überlegen, ob ich für meinen Code ebenfalls solche Varianten einführen soll. Für Iteratoren ist das so gut wie immer sinnvoll.Für direkte Zugriffsmethoden wird, denke ich, hingegen ehr selten lesend auf das angeforderte Datum zugegriffen, wenn das Objekt selbst nicht konstant ist.
Außerdem stört mich, dass zusätzlich zu den "Präfix-"Varianten, immer noch die const-Überladung existiert. Das verleitet dazu, immer begin() zu benutzen, auch wenn nur gelesen werden soll.
Eine Konstantheit kann man natürlich nachträglich immer noch dazu casten, wenn sie gebraucht wird, aber erstens ist das etwas unübersichtlich und zweitens macht das ja auch kaum jemand konsequent. Die "Präfix-"Varianten aufzurufen, wenn nur gelesen werden soll, würde vermutlich häufiger genutzt werden als ein dazu casten der Konstantheit.
Welche Meinung habt ihr dazu? |