为何VARIANT变量的值会自动被取代

为什么VARIANT变量的值会自动被取代
C/C++ code
CString str1(_T("111")),str2(_T("222"));
        VARIANT vt;
        vt.vt = VT_BSTR;
        vt.bstrVal = _bstr_t(str1);
        BSTR bstrTemp = _bstr_t(str2);

为什么执行到最后一句的时候vt的值被str2取代了?
求高手解释

------解决方案--------------------
这样用

CString str1(_T("111")),str2(_T("222"));
VARIANT vt;
vt.vt = VT_BSTR;
vt.bstrVal = _bstr_t(str1).Detach();
BSTR bstrTemp = _bstr_t(str2).Detach();

用完了
SysFreeString(vt.bstrVal)
SysFreeString(bstrTemp)

你上面的都是用的临时变量,执行到下一行_bstr_t就会调用析构把里面的数据释放掉
候vt的值被str2取代只是假象,是_bstr_t 两次申请到的地址是一致的