개체 포인터를 포함하는 모든 std :: container (특히 std :: queue)의 복사본 생성자가 멤버의 복사본 생성자를 호출하여 딥 복사본을 허용하거나 포인터 값에 얕은 복사본을 수행합니까?std :: containers 호출의 복사 생성자에 복사 생성자가 있습니까?
예 : 이벤트 복사 생성자와 기본 클래스가 자신의 복사 생성자와 여러 파생 클래스가 어디에 std::queue<Event*> _eventQueue;
:로
/*******************************************************************************
* <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가 선언된다.
PS : 나는 looove (결합 특히! : D) AtomineerUtils 및 VisualAssistX
편집 : 아래의 답변을 감안할 때
이는 원래 같은 사본을 만들 수있는 적절한 방법이 될 것입니다 원본은 수정되지 않았으며 사본이 원본과 반대가됩니다 (간단한 수정이지만 여전히 중요한 차이점)?
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)));
}
}
유사 : http://stackoverflow.com/questions/5096464/default-assigment-operator-in-c-is-a-shallow-copy 오히려 그것은 단순히이의 상응한다. 그것이 복사 작업보다는 복사 작업에 관한 것이지만 거의 모든 것이 거기에 적용됩니다. –