Почему тип char разыменовывается без знака разыменовывания?

const char* a="ffggd";
cout <<a<< endl;

Почему выводится строка полностью? Вообще как это работает? 'а' же возвращает указатель

P.s И еще такой вопрос,почему в первом случае без const нельзя а во втором можно?

const char *f = "аав"; 
char f[4] = "аав";

Ответы (1 шт):

Автор решения: Harry

Перегрузка функций.

В С++ функция могут существовать функции с одним и тем же именем, но разными типами аргументов. А поскольку оператор << - это функция

ostream& operator<<(ostream&, type t);

то для каждого типа type она может быть своя. Для типа char* (вернее, const char *) она выводит строку, т.е. последовательности символов, на первый из которых указывает этот указатель, а последним - символ перед завершающим нулевым...

→ Ссылка