Что будет содержать абстрактный класс?

Задача: Необходимо создать класс динамического массива и класс односвязного списка, с одинаковыми методами (add, insert, delete, clear)


Ответы (1 шт):

Автор решения: Ildar

для вашей задачи абстрактный класс должен содержать все необходимые виртуальные методы которые будут вызываться у дочерних классов, а чисто теоретически абстрактный класс должен содержать хоть один чисто виртуальный метод, создать экземпляр абстрактного класса нельзя, переопределением чисто виртуальных методов должны заняться дочерние классы иначе они также будут считаться абстрактными классами, вот пример того как может выглядеть основание для вашей задачи:

#include <iostream>
#include <memory>

class Container
{
public:
  virtual ~Container() = default;

  virtual void add() = 0;
  virtual void insert() = 0;
  virtual void del() = 0;
  virtual void clear() = 0;
};

class Vector : public Container
{
public:
  ~Vector() { std::cout << "~Vector\n"; }

  void add() override {}
  void insert() override {}
  void del() override {}
  void clear() override {}
};

class List : public Container
{
public:
  ~List() { std::cout << "~List\n"; }

  void add() override {}
  void insert() override {}
  void del() override {}
  void clear() override {}
};

int main()
{
  std::unique_ptr<Container> container1 = std::make_unique<Vector>();
  std::unique_ptr<Container> container2 = std::make_unique<List>();

  return 0;
}
→ Ссылка