Re: Rückgabe von mehrdimensionalem String in C++

Jeffrey Kelling <[email protected]>
Newsgroups gmane.user-groups.linux.dresden
Message-ID <2993410.ktpJ11cQ8Q@toruk>
Hallo,

den Ausführungen von Konrad stimme ich zu. Nur eine Sache möchte ich gerne 
korrigieren.

>   * wenn Du schon Pointer benutzt, dann initialisiere sie auf nullptr
>     und setze sie nach delete auch immer auf nullptr zurück - das macht
>     die Fehlerdiagnose einfacher!

So ziemlich alle gültigen Anwendungen für new und delete für die ersten zehn 
Jahre sind in der STL abgehandelt. Für den klassischen Fall gibt es 
std::unique_ptr<>, für Felder std::vector<> und dann gibt es noch 
std::shared_ptr<> und std::weak_ptr<> falls man refcounting braucht (das nimmt 
man nur wenn man absolut keine klare Ownership definieren kann.) (das Stichwort 
dazu ist "RAII")

>   * wenn Du eine Referenz zurückgibst machst Du zu 99% einen Fehler, das
>     verbleibende 1% ist zum größten Teil schon von der STL abgedeckt

Ich glaube der häufigste und einfachste Fall für Referenzen die Zurückgegeben 
werden sind Getter von Klassen, die dürften schon mehr als 1% sein. Aber sonst 
fällt mir auch nichts normales ein wo die Rückgabe von Referenzen Sinn macht.

>   * Pointer sind Teufelswerk; Referenzen sind besser aber nicht ganz
>     ungefährlich(*); Value-Typen sind fett und langsam - wähle Dein Gift
>     vorsichtig ;-)

Ab C++17 ist Copy elision bei Return in vielen Fällen für den Compiler pflicht, 
das mach die  Rückgabe von Value-Typen kostenlos, wenn man aufpasst. In den 
Übrigen fällen, kann move-Semantik (ab C++11) helfen.

Viele Grüße

Jeffrey
signature.asc (application/pgp-signature, 273 B)
-----BEGIN PGP SIGNATURE-----

iJUEABMJAB0WIQRYQ1/8enc6816UjQWromRh24YiVQUCYnL6RgAKCRCromRh24Yi
VbMLAX0X+XH15HyPhDiWLcXne/YGApd6QVzXT6Q6Eom60k0h+G9BGTNnXcOCw0Rr
UE7KH6EBfAk2MnyBguval2yrOXjOZax9Unxta02tO/qS8rxzVyQ3uCCDv3025z0Q
s6L3unodYg==
=Z66s
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.