В следующем коде вывод не ожидается:
class test
{
public:
test()
{
std::cout << "Created" << (long)this << std::endl;
}
~test()
{
std::cout << "Destroyed" << (long)this << std::endl;
}
};
int main(int argc, char** argv)
{
std::vector<test> v;
test t;
v.push_back(t);
return EXIT_SUCCESS;
}
При выполнении он показывает:
Created-1077942161
Destroyed-1077942161
Destroyed674242816
Я думаю, что второго выхода "Destroyed" не должно быть. Когда я не использую вектор, результатом будет одна Созданная и одна Разрушенная строка, как и ожидалось. Это нормальное поведение?
(Это скомпилировано с помощью GCC в системе FreeBSD)