C ++ вектор объектов базового классаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 C ++ вектор объектов базового класса

Сообщение Anonymous »

Если у меня есть базовый класс и полученный класс, я могу создать вектор указателей базового класса, если я хочу группировать несколько базовых и/или полученных классов вместе в контейнере.
Пример:

Код: Выделить всё

class base
{
}

class derived : public base
{
}

std::vector group;
< /code>
Но возможно ли сделать следующее? < /p>
std::vector group;
IE: без указателей, которые требуют нового ing и delete ing? Шаблонный класс, который принимает параметр шаблона t . Вы можете думать об этом как < /p>

Код: Выделить всё

template
std::vector
Все это означает, что std :: vector содержит элементы того же типа. T описывает тип. C ++ статически напечатан, что означает, что все типы указаны во время компиляции. < /P> может быть одним из многих различных типов. Однако каждый экземпляр std :: vector содержит элементы одного и того же типа. Другими словами, какой размер он занимает в памяти? Это довольно очевидное ограничение. Вы не можете упаковать элементы в память, если размер элементов не известен. Кроме того, вы не можете перейти к элементу в массиве во время O (1), если только индекс элемента не может быть преобразован в адрес памяти, используя умножение. Поэтому вы можете создать std :: vector . Тем не менее, база класса не может иметь такого же размера, что и полученный класс , поэтому вы не можете создать std :: vector .
Как объясняют другие в ответах, std :: vector не ведут полиморфи.>

Подробнее здесь: https://stackoverflow.com/questions/343 ... ss-objects
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»