Dwa wywołania destruktora

Dla następującego kodu:

#include<iostream>
#include<vector>
#include<string>
using namespace std;

 struct Test
 {

    string Str; 
    Test(const string s) :Str(s)
    { 
         cout<<Str<<" Test() "<<this<<endl;
    }
    ~Test()
    { 
         cout<<Str<<" ~Test() "<<this<<endl; 
    }
 };

 struct TestWrapper
 {
    vector<Test> vObj;
    TestWrapper(const string s)
    {
       cout<<"TestWrapper() "<<this<<endl;
       vObj.push_back(s);
    }

    ~TestWrapper() 
    { 
       cout<<"~TestWrapper() "<<this<<endl;
    }
 };

int main ()
{
   TestWrapper obj("ABC");
}

To było wyjście, które otrzymałem na moim kompilatorze MSVC ++:

TestWrapper () 0018F854
ABC Test () 0018F634
ABC ~ Test () 0018F634
~ TestWrapper () 0018F854
ABC ~ Test () 003D8490

Dlaczego istnieją dwa wywołania Test destructor, chociaż tworzony jest tylko jeden obiekt testowy. Czy istnieje jakiś tymczasowy obiekt utworzony pomiędzy? Jeśli tak, dlaczego nie ma wywołania odpowiadającego mu konstruktora?

Czy czegoś mi brakuje?

questionAnswers(3)

yourAnswerToTheQuestion