Zwei Aufrufe zum Destruktor

Für den folgenden Code:

#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");
}

Dies war die Ausgabe, die ich auf meinem MSVC ++ - Compiler bekam:

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

Warum gibt es zwei Aufrufe von Test destructor, obwohl nur ein Testobjekt erstellt wird. Gibt es ein temporäres Objekt, das dazwischen erstellt wurde? Wenn ja, warum wird der entsprechende Konstruktor nicht aufgerufen?

Vermisse ich etwas?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage