Потому что это указатель на foo. И у Фу 3 символа. Так становится P3foo
. Другой имеет тип foo
, поэтому он становится 3foo
. Обратите внимание, что текст зависит от реализации, и в этом случае GCC просто дает вам внутреннее искаженное имя.
Введите это искаженное имя в программу c++filt
, чтобы получить незафиксированное имя:
$ c++filt -t P3foo
foo*