Мой ученик представил код C ++, похожий на следующий.Код компилируется и запускается, но оператор throw
выдает следующее сообщение:
terminate вызывается после создания экземпляра int
Если я сделаю функциюvoid
компилятор жалуется
неверное использование 'void'
в строке, содержащей оператор throw
(как ожидается).
class TestClass
{
public:
int MyException()
{
return 0;
}
void testFunc()
{
throw MyException();
}
};
int main(int argc, char** argv)
{
TestClass tc;
tc.testFunc();
return 0;
}
Итак, как C ++ интерпретирует MyException
, поскольку код «правильный»?