The + operator joins two strings into a new one. At least one operand must be a string object. Add a string to a literal: s + "!". Add two variables: s1 + s2. Result is always new.
You cannot add two literals directly. "hello" + "world" fails because literals are arrays. Wrap one: string("hello") + "world" works. The operator doesn't modify operands. After s3 = s1 + s2, both s1 and s2 keep original values.
Only s3 holds the combined result. This prevents accidental modifications.