Modernes C++ programmieren

Okt 23, 2024

lst-0342-godb.cpp

//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/v1TP6aYxT 
#include <string>
#include <string_view>
using std::string; using std::string_view;
class Widget {
    string name_ = "";
public:
    void setName(string_view newName) {
        name_ = newName;
    }
    const string& getName() const {    // const&-Rückgabe
        return name_;
    }
};
int main() {
    Widget w{};
    w.setName("Titel");
    string name1 = w.getName();        // neuer String, also Kopie
    name1.clear();                     // die Kopie dürfen Sie wieder verändern
    const string& name2 = w.getName(); // const-Referenz auf inneren string name_
    /* name2.clear(); */                   // name2 ist const, geht also nicht
    string& name3 = w.getName();       //                 (ERR)  Funktion gibt const& zurück, nicht &.
    auto name4 = w.getName();          // identisch mit name1
    const auto& name5 = w.getName();   // identisch mit name2
}