Вызывает ли конструктор копирования любого std :: container (в частности, std :: queue), содержащего указатели объектов, конструкторы копирования члена, чтобы разрешить глубокие копии, или он выполняет поверхностное копирование значений указателя?
Пример:
/*******************************************************************************
* <summary>
* Initializes a new instance of the EventHandler class.
* </summary>
*
* <param name="handler">The handler to copy.</param>
*******************************************************************************/
EventHandler::EventHandler(const EventHandler& handler) : _eventQueue(handler._eventQueue) { }
_eventQueue объявляется как: std::queue<Event*> _eventQueue;
, где Event - это базовый класс с конструктором копирования и имеет несколько производных классов со своими собственными конструкторами копирования.
P.S .: Я люблю AtomineerUtils и VisualAssistX (особенно в сочетании!: D)
EDIT:
Учитывая ответы ниже, будет ли это правильным способом создания копии оригинала таким образом, чтобы оригинал не был изменен, или это будет копия, обратная оригиналу (простое исправление, но все же важное различие)?
EventHandler::EventHandler(const EventHandler& handler) {
for(size_t i = 0; i < handler._eventQueue.size(); ++i) {
this->_eventQueue.push(new Event(handler._eventQueue._Get_container().at(i)));
}
}