У меня есть следующие классы в заголовочном файле, предназначенные для создания полиморфизма во время выполнения для набора инструкций, которые описывают состояния системы во встроенной среде:
class foo
{
public:
virtual void bar(void) = 0;
virtual ~foo() {}
};
class derived1 : public foo
{
private:
int data1;
public:
void bar(void)
{
//implementation 1
};
derived1(int d) : data1(d) {}
~derived1() {}
};
class derived2 : public foo
{
private:
int data2;
public:
void bar(void)
{
//implementation 2
}
derived2(int d) : data2(d) {}
~derived2() {}
};
Каков наилучший способ инициализации вектора Тип const vector<foo*>
? В настоящее время я делаю следующее:
const std::vector<foo*> v =
{
new derived1(a),
new derived1(b),
new derived2(c),
new derived2(d)
};
Учитывая спецификатор const
, эта память все еще выделяется динамически? Он хранится в анонимном пространстве имен для использования несколькими классами состояний. Поскольку многие классы состояний имеют одни и те же элементы, я хотел определить вектор для всех них, чтобы сохранить пространство кода. Вектор лучше всего подходит для такого поведения?
Ps, мне не нужно беспокоиться о вызове delete
на любом из указателей, поскольку приложению требуется эта информация для всей среды выполнения.