вопросы по искажению имен в C ++
Я пытаюсь изучить и понять искажение имени в C ++. Вот несколько вопросов:
(1) изDevX
Когда глобальная функция перегружена, сгенерированное искаженное имя для каждой перегруженной версии является уникальным. Имя искажения также применяется к переменным. Таким образом, локальная переменная и глобальная переменная с тем же именем, заданным пользователем, все еще получают разные искаженные имена.
Существуют ли другие примеры, в которых используется искажение имен, помимо перегрузки функций и глобальных и локальных переменных с одинаковыми именами?
(2) изWiki
Возникает необходимость, когда язык позволяет именовать разные сущности с одинаковым идентификатором, если они занимают другое пространство имен (где пространство имен обычно определяется модулем, классом или явной директивой пространства имен).
Я не совсем понимаю, почему искажение имен применяется только в тех случаях, когда идентификаторы принадлежат разным пространствам имен, поскольку функции перегрузки могут находиться в одном и том же пространстве имен, а глобальные и локальные переменные с одинаковыми именами также могут находиться в одном и том же пространстве. Это как понять?
Переменные с одинаковыми именами, но в разных областях также используют искажение имен?
(3) Есть ли у C искажение имени? Если это не так, как он может справиться со случаем, когда некоторые глобальные и локальные переменные имеют одинаковые имена? C не имеет функций перегрузки, верно?
Спасибо и всего наилучшего!