摘要:
事情缘起于代码走读会议的一次讨论。基本的需求很简单,就是实现类似下面这样一个函数:HRESULT GetText(/* [out] */BSTR* pText); 很自然地,首先写出来的实现是这样的:HRESULT GetText(/* [out] */BSTR* pText){ ASSERT(pText != NULL); *pText = ::SysAllocString(L"This is the text."); return S_OK;} 它的调用方式如下(这里为了简单起见我们忽略掉了对返回值的判断): BSTR bstText = NULL; GetText(& 阅读全文