8 октября 2008 г.

Задачи на собеседованиях: наследование в C++

Очередной вопрос с собеседования, который часто спрашивают.

У нас есть некая иерархия классов. Нам нужно запретить наследование от какого-то класса. В Java для этого есть специальное ключевое слово final, но в C++ такого слова нет. Попытка наследования от финального класса должна пресекаться на этапе компиляции.

5 комментариев:

  1. точно не помню, но по моему приватный деструктор нужен =)

    ОтветитьУдалить
  2. Да, в общем-то правильно.

    Лично мне известно три способа сделать это:

    1. Приватный конструктор.
    2. Приватный деструктор.
    3. Способ, который предлагает сам Страуструп - http://www.research.att.com/~bs/bs_faq2.html#no-derivation

    Каждый из способов имеет свои достоинства и недостатки. Я не удивлюсь, если способов на самом деле больше трех :)

    ОтветитьУдалить
  3. - В Java для этого есть специальное ключевое слово final, но в C++ такого слова нет.

    http://www.kalnitsky.org/2012/01/23/introduction-to-cpp11-new-specifiers/

    ОтветитьУдалить
    Ответы
    1. С появлением новых ключевых слов в C++ задача актуальность не потеряла :)

      Удалить
  4. Your car could be stolen if you don't remember this!

    Imagine that your vehicle was taken! When you visit the police, they inquire about a specific "VIN search"

    A VIN decoder is what?

    Similar to a passport, the "VIN decoder" allows you to find out when the car was born and who its "parent"( manufacturing plant) is. Additionally, you can find:

    1.The type of engine

    2.Model of a vehicle

    3.The DMV's limitations

    4.Number of drivers in this vehicle

    You will be able to locate the car, and keeping in mind the code ensures your safety. The code can be viewed in the online database. The VIN is situated on various parts of the car to make it harder for thieves to steal, such as the first person sitting on the floor, the frame (often in trucks and SUVs), the spar, and other areas.

    What happens if the VIN is intentionally harmed?

    There are numerous circumstances that can result in VIN damage, but failing to have one will have unpleasant repercussions because it is illegal to intentionally harm a VIN in order to avoid going to jail or being arrested by the police. You could receive a fine of up to 80,000 rubles and spend two years in jail. You might be stopped on the road by a teacher.

    Conclusion.

    The VIN decoder may help to save your car from theft. But where can you check the car reality? This is why we exist– VIN decoders!

    ОтветитьУдалить