Sobes.tech
Junior — Middle+
58

Найдите и исправьте ошибки в приведённом C++ коде

Компании, где спрашивали:

Киберпротект
Условие задачи

В этом фрагменте C++ кода есть проблемы, связанные с управлением динамической памятью и наследованием. Не меняя структуру классов, исправьте ошибки, чтобы программа корректно создавала, копировала и удаляла объекты.

class Foo
{
    public:
    Foo(int size) { i = new int[size]; }
    ~Foo() { delete i; }
    private:
    int* i;
};

class Bar : Foo
{
    public:
    Bar(int size) : Foo(size) { i = new char[size]; }
    ~Bar() { delete i; }
    private:
    char* i;
};

void main()
{
    Foo* f = new Foo(100);
    Foo* b = new Bar(200);
    *f = *b;
    delete f;
    delete b;
}