Разница между атрибутами видимости hidden и default в C++ заключается в том, как они влияют на видимость символов. 1
Атрибут default заставляет символ экспортироваться во всех случаях. 1 Символы с атрибутом default имеют видимость, которую имеют все символы, если не используются специальные механизмы, то есть экспортируются как часть открытого интерфейса. 1
Атрибут hidden, в свою очередь, скрывает символ. 1 Символы с атрибутом hidden не экспортируются, другие компоненты не смогут их использовать. 2 Кроме того, при использовании атрибута hidden общая библиотека не загружает скрытый символ из определений символов других компонентов, а загружает его из собственных определений символов. 2
Атрибуты видимости могут быть применены к функциям, переменным, шаблонам и классам C++. 1