Если в конструкторе класса ... произойдет исключительная ситуация, будет ли потеряна память при откате по стеку?

Если в конструкторе класса
class A {
public:
A() { ptr = new char[size];
Init(); }
~A() { if (ptr) delete[] ptr; }
char* ptr; };
произойдет исключительная ситуация, будет ли потеряна память при откате по стеку?



да, будет, во всех случаях
будет, только если объект класса создавался с помощью new
будет, если создавалась автоматическая переменная класса a
нет, не будет
зависит от конкретного компилятора

Отметьте, какие возможности языка Си++ помогают предупреждать ошибки:

наличие встроенных типов данных
контроль типов при компиляции
возможность использовать указатели вместо массивов
обязательность объявления функций до их использования
наличие символических констант

Какие требования предъявляются к классу исключительных ситуаций?

он должен быть наследован от специального класса exception
он не может использовать множественное наследование
он должен содержать атрибуты только встроенных типов
он может быть произвольным классом

Что будет выведено на экран после выполнения программы?

int main()
{
try{
try
{ throw 3.14; }
catch (int) { cout << "Exception 1"; }
}
catch (...)
{ cout << "Exception 2"; }
return 0;

}



Exception 1Exception 2
Exception 1
Exception 2

Возможно ли использовать механизм исключительных ситуаций в деструкторах

да, но делать это следует с осторожностью
да, никаких проблем возникнуть не может
нет, компилятор выдаст ошибку
да, но результат будет непредсказуем

Что может быть аргументом оператора throw?

целое число
объект класса
строка
ноль
условный оператор
вызов деструктора объекта
вызов оператора return

Оператор throw без аргументов

повторно вызывает обрабатываемую исключительную ситуацию
вызывает последнюю необработанную исключительную ситуацию
вызывает исключительную ситуацию типа Exception

Возможно ли использовать механизм исключительных ситуаций в деструкторах

да, но делать это следует с осторожностью
да, никаких проблем возникнуть не может
нет, компилятор выдаст ошибку
да, но результат будет непредсказуем

Что происходит при попытке выполнить оператор return внутри блока catch?

аварийная остановка программы
повторное создание обрабатываемой исключительной ситуации
выход из функции
ошибка компиляции
ошибка выполнения

RSS-материал RSS-материал

Не нашли ответ на свой вопрос? Задайте его на нашем форуме.