Для чего эти фигурные скобки?
Нашёл пример кода на с++. Суть такова:
void test()
{
??{
Int x;
??}
??{
Int a;
??}
}
Что за скобки без какого либо объявления ?
Ответы (1 шт):
Несколько команд в фигурных скобках образуют один блок. Например команда if имеет синтаксис
if ( условие )
блок-правда
else
блок-неправда
И чтобы выполнить несколько действий при каком-то условии их заключают в фигурные скобки.
if ( x != 0 ) {
int tmp = x ;
x *= x ;
x *= tmp ;
}
Этот блок воспринимается как одна команда. Внутри этого блока разрешается объявлять переменные и они имеют локальную область действия. Область жизни заканчивается после выхода работы за фигурные скобки. И если тип объекта имеет нетривиальный деструктор, то он тоже вызовется.
Без команд if или других фигурные скобки ограничивают просто блок команд. Которые могут иметь свои переменные, у которых время жизни ограничиваются начиная от объявления, до выхода работы из области этих фигурных скобок. Также разрешается, чтобы они имели одинаковое имя, так-как они в разных блоках.
{ Int x ; // вызовется конструктор x
} // вызовется деструктор x
{ Int y ; // вызовется конструктор y
} // вызовется деструктор y
Если эти объявления не заключать в фигурные скобки, то деструкторы будут вызваны только при завершении функции.
void test()
{ Int x ; // вызовется конструктор x
Int y ; // вызовется конструктор y
} // вызовется деструктор y
// вызовется деструктор x