веревка достаточной длины чтобы выстрелить себе в ногу
Этот метод не срабатывает в С++, потому что функции конструктора вызываются неявно в качестве части объявления; объявление часто скрывает вызов функции. Если вы пропускаете объявление, то вы пропускаете и вызов конструктора. Например, в следующей программе деструктор для x вызовется, а конструктор нет:
Вследствие этой проблемы лучше всего совсем избегать переходов goto в программах на С++.foo() { if ( некое_условие ) goto выход; некий_класс x; // Конструктор не вызывается. (Оператор goto // перескакивает через него.) // ... выход: // Здесь вызывается деструктор для x при выходе x из // области видимости. }