Есть ли что-то похожее на деструктор, но для namespace
? У меня есть несколько пространств имен, каждая из которых имеет определенную функциональность, а некоторые имеют свои собственные переменные внутри. Я понимаю, что определение этих переменных как static
ограничит их область применения конкретным использованием пространства имен, например. вызывая NamespaceA::function()
, но будут ли они уничтожены (удалены, очищены и т. д.) каким-то образом, когда я позвоню NamespaceB::function()
?Destructor-like для пространства имен
Как, я называю NamespaceA::function()
и NamespaceA::vector
привыкает, то мне нужно позвонить NamespaceB::function()
, и его NamespaceB::vector
привыкает. Теперь у меня есть два вектора, занимающих память, когда мне нужен только один, для текущего пространства имен. Есть ли способ, который я могу автоматически очистить неиспользуемые переменные, похожие на то, что деструктор делает в классе? Обратите внимание, что вызов пространств имен по прихоти пользователя, неизвестно, какой класс вызван, и когда.
Причина, по которой я хочу, это то, что могут быть векторы, которые я не хочу беспорядочно болтаться, едя память, даже если они не являются значениями данных GB
.
Не видя реального кода, что трудно сказать, но если у вас есть глобальные переменные, объявленные внутри пространства имен они так же, как регулярные глобальные переменные, кроме имени, имеют область действия. – NathanOliver
@NathanOliver Thta - плохая новость. Я понимаю, что использование глобальных переменных не является хорошей практикой, поэтому я бы хотел этого избежать. Но, ради ответа, существуют ли пространства имен как деструктор или какой-то вид? –
Пространства имен - это чисто синтаксические конструкции, используемые для организации вашего кода. Пространства имен не «построены» во время выполнения и поэтому не могут иметь деструктор или что-либо подобное ему. Переменные, объявленные в пространстве имен, являются статическими переменными, которые видны только в пределах данной области. –