Для чего эти фигурные скобки?

Нашёл пример кода на с++. Суть такова:

        void test()
        {
         ??{
            Int x;
         ??}
         ??{
            Int a;
         ??}
        }

Что за скобки без какого либо объявления ?


Ответы (1 шт):

Автор решения: AlexGlebe

Несколько команд в фигурных скобках образуют один блок. Например команда 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
→ Ссылка