Собираем
информацию
по крупицам
Статьи - Компьютерное

Программирование на C++ и Qt

Как в C++ сделать массив объектов, у которых конструктор имеет аргументы
23-10-2012
22:41:06

В этой статье размещена выжимка по вопросу о том, как создать массив объектов, у которых конструктор имеет аргументы. Ответ я искал очень долго, так как оказалось, что стандартных механизмов для создания массивов объектов с аргументами в C++ нет.

 

 

Вопрос

Есть объект, у которого конструктор имеет аргументы. Нужно создать массив таких объектов, скормив конструкторам одинаковые аргументы. Но вот не пойму, какой синтаксис надо использовать.

 

Массив объектов с конструктором без аргументов создать довольно просто:

 

element elements[100];


А как сделать массив объектов с конструктором, у которого есть аргументы?



Ответ

Чтобы такое сделать, надо вручную создать массив объектов. Для этого вначале выделяется память под массив объектов, а потом в этой памяти надо создать нужное количество объектов с нужными параметрами конструктора. В момент создания объектов можно задавать одинаковые параметры конструкторам, а можно и разные, например, по какому-нибудь алгоритму.

 

Пример:

 

// Ручное создание массива объектов в C++

// Выделяется память для объектов класса Foo в количестве count
Foo *foos = (Foo*)operator new( sizeof( Foo ) * count ) );

// Создаются элементы массива (объекты) с нужными начальными аргументами
for(int i=0; i<count; ++i )
  new( &foos[ i ] ) Foo( a, b );

...

// Удаление элементов
for( int i = 0; i < count; ++i )
  foos[ i ].~Foo();

// И удаление начального указателя
operator delete( foos );

 

В этом примере продемонстрированы основные действия по созданию массива объектов с аргументами в конструкторе - от создания массива до удаления.

 



К списку "Компьютерное"

Интересное на сайте


BASH » Cron Emulator

Многие системные администраторы Linux часто сталкиваются с одной и той же проблемой: при попытке запуска команды из-под демона Cron, она ведет себя не...


Штучки-дрючки » Самодельный диафильм

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


Демо на Ассемблере » AeroBall

Размер: 4 Кб Требования: DOS 6.22 Год: 1999   Третье место из трех 8) в номинации 4Kb на демопати Paradox-99. Писано в рамках демогруппы TransMi...

RSS подписка

Подпишитесь на новости сайта по RSS

Поделиться этой страницей


Статистика


Где купить кассовый аппарат - кассовые аппараты. Кассовые аппараты для Вас.

Внимание!


На этом сайте разрабатывается программа MyTetra и её родственные проекты. Доступны к просмотру следующие базы знаний:

 

База Xintrea (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

База Anatolean

База Аrmagedec

База SorokinRed

База Deadelf79

База Adgaver (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

База Pipitos1983

База Soxsten

База Silenn

База Shlyapnikova - херомантия и ригидность

База Svoynickname

База Larson227

База Velonski

База BrokeRU

База Mcold

 

Требуют доработки:

 

База Tairesh

База Ivnglkv

База Kolyag87

База Andyk101

База Garik456456

База Harpokrat

База SalexIzyh

База Duwaz

База RuDennn

База Manakaden

База Vitvrn

База Fanrok

 

Подробности на странице MyTetra Share.

 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик