オブジェクトポインタを含む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
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)));
}
}
類似:http://stackoverflow.com/questions/5096464/default-assigment-operator-in-c-is-a-shallow-copyむしろそれは単にこれの同等を行います。これは、コピーの作成ではなく、コピーの割り当てに関するものですが、その上にあるすべてのことが両方に適用されると言われています。 –