ATL::CComVariant
有少数赋值运算符。我在实现中看到的是赋值运算符接受LPCOLESTR
,IUnknown*
或者IDispatch*
第一个动作是调用Clear()
。
如果以这样一种方式调用运算符,即传递同一对象的成员变量
CComVariant variant;
variant = L"string";
variant = variant.bstrVal;
(具有相同效果的笨方法较少)Clear()
将释放封装的对象,并且对现在悬空指针的所有后续操作将导致未定义的行为。
我是正确的还是我误解了什么?