Я читаю Accelerated C++ Кенига. Он пишет, что «новая идея состоит в том, что мы можем использовать + для объединения строки и строкового литерала – или, если уж на то пошло, двух строк (но не двух строковых литералов).
Хорошо, я полагаю, это имеет смысл. Теперь перейдем к двум отдельным упражнениям, призванным прояснить это.
Действительны ли следующие определения?
Код: Выделить всё
const string hello = "Hello";
const string message = hello + ",world" + "!";
Теперь я попробовал выполнить вышеописанное, и это сработало! Так что я был счастлив.
Затем я попробовал выполнить следующее упражнение;
Код: Выделить всё
const string exclam = "!";
const string message = "Hello" + ",world" + exclam;
Это не сработало. Теперь я понимаю, что это как-то связано с тем фактом, что вы не можете объединить два строковых литерала, но я не понимаю семантической разницы между тем, почему мне удалось заставить работать первый пример (разве ",world" и "!" - два строковых литерала? Разве это не должно было сработать?), но не второй.
Подробнее здесь:
https://stackoverflow.com/questions/606 ... g-literals