Hej Tak for svar. Jamen jeg lægger vel også to char*(eller char[]) sammen i 2? Altså 2) const std::string message = hello + ", world " + "!"; så: string + string literal + string literal Er det ikke korrekt forstået?
Men det er 4'eren ikke: const std::string message = "Hello" + ", world" + exclam; så string literal + string literal + string
Håber jeg har forklaret det jeg ikke har forstået godt nok.
Ah. Nu tror jeg jeg har fundet ud af det. Det er fordi + operatoren er left associative. Så derfor går det godt i 2 hvor en string konkateneres med en string literal. Dette bliver så en string, som så igen kan konkateneres med en string literal.
I 4'eren går det ikke, da det er 2 string literals der lægges sammen og det må man ikke.
I 2 lægger du en string literal til en std::string, det giver en std::string, hertil lægger du en ny string literal, og det giver også en std::string. Eller formuleret anderledes, det der sker er: (std::string + string literal) + string literal Og resultatet af det inden i parentesen er en std::string, compileren evaluerer fra venstre mod højre, og det er venstre sidens + operator der kommer i brug. Det går alt sammen godt fordi std::string har en + operator der tager en string literal som højreside.
I 4 lægger du to string literals sammen, det går ikke. Eller formuleret anderledes, det du forsøger er: (string literal + string literal) + string Her er der ikke nogen operator der kan bruges.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.