Николай Веселуха
Высший разум
(362130)
11 лет назад
#include <iostream>
class Foo
{
public:
Foo(int j) { i = new int[j]; }
~Foo() { delete[] i; } //требуется удалять массив
protected:
Foo() { }; // требуется конструктор по умолчанию, спрятанный от пользователя
private:
int * i;
};
class Bar: Foo
{
public:
Bar(int j) { i = new char[j]; }
~Bar() { delete[] i; } //требуется удалять массив
private:
char * i;
};
void main()
{
Foo * f = new Foo(100);
Bar * b = new Bar(200); // не совпадали типы
//*f = *b; // смесь бульдога с носорогом (нельзя преобразовать к недоступному базовому классу)
b = NULL;
f = NULL;
}
Здесь наследование нужно, как собаке пятая нога.
{
public:
Foo(int j) { i=new int[j]; }
~Foo() { delete i; }
private:
int* i;
};
class Bar: Foo
{
public:
Bar(int j) { i=new char[j]; }
~Bar() { delete i; }
private:
char* i;
};
void main()
{
Foo* f=new Foo(100);
Foo* b=new Bar(200);
*f=*b;
delete f;
delete b;
}
Перечислите все проблемы, которые вы видите в данном коде