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-----