Из-за приоритета оператора строка
string s11 = "hello" + " , " + s3;
обрабатывается как
string s11 = ("hello" + " , " ) + s3;
Подвыражение "hello" + " , "
недопустимо. Первый член имеет тип char const [6]
(массив из 6 char const
), а второй член имеет тип char const [4]
(массив из 4 char const
).
Нет +
Оператор между двумя. Вот почему это ошибка компилятора.
Вторая строка
string s11 = s3 + " , " + "hello"
обрабатывается как
string s11 = (s3 + " , ") + "hello"
Подвыражение s3 + " , "
допустимо, посколькусуществует перегрузка operator+
, которая поддерживает эту операцию. Подвыражение оценивается как std::string
. Следовательно, последующая + "hello"
также является поддерживаемой операцией.