Эта третья строка иллюстрирует синтаксический сахар, который является оператором вставки.
По существу, выражение (cout<<"@")
вычисляется первым, в результате получается @
, который возвращает сам поток cout
.
Только тогда !
сначала, а затем выражение отправляется на cout
.
Это эквивалентно:
operator<<( operator<<( operator<<(cout,"!"), ( operator<<(cout,"@") ) ), endl);
^------------------^
Выделенный раздел является выражениемкоторый должен быть оценен до вызова каких-либо функций.