Die Rückgabewerte Ihrer Funktion werden mit dem Kopierkonstruktor von std :: string kopiert. Das können Sie sehen, wenn Sie mit einem Debugger durch Ihre Programmausführung gehen.
Wie die Conments sagen, ist es ziemlich selbst erklärend. Der erste Wert kann bearbeitet werden, wenn Sie ihn zurückgeben. Der zweite Wert wird schreibgeschützt sein. Es ist ein konstanter Wert.
Zum Beispiel:
int main() {
std::cout << three().insert(0, "All ") << std::endl; // Output: All kittens.
std::cout << four().insert(0, "women ") << std::endl; // Output: This does not compile as four() returns a const std::string value. You would expect the output to be "women are an essential part of a healthy diet”. This will work if you remove the const preceding the four function.
}
Offensichtlich, weil Kätzchen aufwachsen und Katzen werden. – Yakk
Mit dem ersten können Sie z.B. 'three() [0] = 'K'', mit der zweiten Funktion kann man sowas nicht machen. –
die Namen sagen schon alle. Einer ist const der andere nicht. – user463035818