Разница между внутренней и внешней связью в C++ заключается в области видимости символов (переменных, функций и классов) в различных единицах трансляции или файлах. 1
Внутренняя связь ограничивает видимость символа единицей трансляции, в которой он определён. 1 То есть из других исходных файлов символ недоступен. 1 Обычно внутренним связыванием инкапсулируют детали реализации, недоступные другим частям программы. 1 Для объявления символа с внутренней связью в C++ используют ключевое слово static. 13
Внешняя связь, в свою очередь, позволяет получать доступ к символам из любой единицы трансляции в программе. 1 То есть если у переменной, функции или объекта имеется внешняя связь, они используются в нескольких исходных файлах. 1 Внешнее связывание — это стандарт для неконстантных глобальных переменных и функций, объявленных вне какой-либо функции или класса. 1 Для объявления символа с внешней связью в C++ используют ключевое слово extern. 3
Таким образом, сущность с внешним связыванием экспортируется за пределы единицы трансляции, тогда как сущность с внутренним связыванием не известна внешнему миру. 4