Сначала у меня есть распечатка всех «адресов».То, что я пытаюсь понять, это то, почему это выделяется в то время.Я построил мультикарту со строкой и объектом, в конструкторе и деструкторе этого объекта у меня есть распечатка, когда они вызываются.
Первый вопрос: это копирование объекта?Второй вопрос: почему я вижу больше деструкторов, чем конструкторов?Третий вопрос: я никогда не получал адрес, указанный в конструкторе, который мы видим ниже (последние 5)
Спасибо за помощь в понимании этой конструкции / разрушения в мультикарте .
Oliver
std::multimap <string, TestObject> m;
for(int i = 0; i < 5 ;i++){
TestObjectone("test", i);
m.insert(pair<string, TestObject>(("a" + i), one));
cout << "Single Iteration" << i << endl;
}
Конструктор параметра test0 0x22ff24 Деструктор называется TestObject: test0 0x22ff08
Деструктор вызывается TestObject: test0 0x22ff18
Одиночная итерация0
Деструктор называется TestObject: test0 0x22ff24 * 1015Конструктор параметров test1 0x22ff24
Деструктор называется TestObject: test1 0x22ff08
Деструктор вызывается TestObject: test1 0x22ff18
Одиночная итерация1
Деструктор вызывается TestObject: test1 0x22ff24
Конструктор параметров 2 2 0x22ff Деструктор тест2 1021называется TestObject: test2 0x22ff08
Деструктор называется TestObject: test2 0x22ff18
Одиночная итерация2
Деструктор называется TestObject: test2 0x22ff24
Конструктор параметров test3 0x22ff24
Деструктор * называется TestObjectff 10 10xx0: test3* ДеStructor называется TestObject: test3 0x22ff18
Одиночная итерация3
Деструктор называется TestObject: test3 0x22ff24
Конструктор параметров test4 0x22ff24
Деструктор называется TestObject: test4 0x22ff08
Деструктор * называется TestObject18 test0bx18: test1033 * Одиночная итерация4
Деструктор называется TestObject: test4 0x22ff24
Деструктор называется TestObject: test4 0x482f6c
Деструктор называется TestObject: test3 0x482efc
Деструктор называется TestObject: test0 0392Деструктор называется TestObject: test2 0x482e8c
Деструктор называется TestObject: test1 0x482e1c