Interesting C/C++ interview questions

User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

шпиён wrote:
tchicago wrote:
roadman wrote:Достоинства и недостатки двух методов обработки exception

Code: Select all

class exep
{
public:
   exep(int err) : _error(err) {}
   int get_code() const { return _error; }
private:
   int _error;
};

int main()
{
   try
   {
      throw new exep(1);
   }
   catch (exep* x)
   {
      cout << x->get_code();
      delete x;
   }

   try
   {
      exep x(1);
      throw x;
   }
   catch (exep& x)
   {
      cout << x.get_code();
   }



А почему этот вопрос никто не удостоил вниманием? Все слишком просто или слишком сложно? :mrgreen:


С первого взгляда кажется просто.
1) Лишняя аллокация/деаллокация памяти. Да еще и лик может быть, если из catch своё исключение бросится до delete.
2) Лишнее копи-конструирование, что для приведенного в примере exep не хуже копирования указателя в случае 1, но для больших/сложных классов может быть дорого.
На мой взгляд, метод 2 однозначно лучше, т.к. за расчет на высокую скорость обработки исключений надо anyway бить лопатой по голове.


А со второго? :wink: в чем разница между бросанием с нью и передачей бай референсе?
Именно ексепшн имеется ввиду.
P.S. Седни думать заставили...
Кстати, шпиен, где написано что нью бросает ексепшн? В стандарте? В АРМ такого нет. Настолько привык к етим догмам, что и не думал..
Верить нельзя никому - даже себе. Мне - можно!
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Да, совсем необязательно в дерайвед классе ексепшн дерайвать из базового. мона и свои бросать. Страуструп все предусмотрел! :umnik1:
Верить нельзя никому - даже себе. Мне - можно!
VBez
Уже с Приветом
Posts: 491
Joined: 23 Feb 2004 11:25

Post by VBez »

Vovka wrote:Тех, кто дестракторы делает виртуальными _всегда_, я бы сам никогда до программирования не допустил бы. :)


Кстати, если не ошибаюсь у нас есть такое ОБЯЗАТЕЛЬНОЕ требование от QAев :mrgreen:

Return to “Работа и Карьера в IT”