Was ist der Unterschied zwischen diesen beiden Fällen des Hinzufügens einer Zeichenfolge?

Ich habe festgestellt, dass der Compiler beim Initialisieren eines Strings einen Fehler gemeldet hat, den ich nicht erwartet habe.

Beispielsweise

#include <iostream>
#include <string>

using namespace std;

int main() {
    string s1 = "Hello", s2 = "World!"; // ok
    string s3 = s1 + ", " + "World!"; // ok
    string s4 = "Hello" + ", " + s2; // error
    cout << s1 + " " + s2 << endl; //ok
    return 0;
}

Für mich, wenns3 hat prima funktioniert,s4 sollte dasselbe tun.

Warum erhalte ich diesen Fehler? Was ist der Unterschied zwischen diesen beiden Initialisierungszeichenfolgen s3 unds4)?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage