将 _bstr_t 对象传递给期望 BSTR 作为参数的函数是否安全?

Is it safe to pass a _bstr_t object to a function expecting BSTR as argument?

我是 C++ 新手,所以请多多包涵。我知道 _bstr_t 只是 BSTR 的包装器 class 但是,如 MSDN 文档中所示,_bstr_t 没有将自身转换为 [=12= 的运算符].

那么我可以将 _bstr_t 对象传递给需要 BSTR 作为参数的函数吗,它安全吗?

或者有更好的方法吗?我特别不希望任何内存泄漏。

我看过很多文章,所以对此感到困惑。对不起,如果这是一个微不足道的问题。

_bstr_t does not have an operator to convert itself to BSTR

是也不是。 BSTR定义为等同于“afx.h”头文件中的wchar_t*

typedef _Null_terminated_ LPWSTR BSTR;

并且 _bstr_t class(在“comutil.h”中) 是否具有转换运算符,有或没有 const 限定符,如:

class _bstr_t {
public:
//...
//...
    // Extractors
    //
    operator const wchar_t*() const throw();
    operator wchar_t*() const throw();
//...

编辑:但是来自 documentation for those operators 的一个未成年人 'note of caution':

Assigning a new value to the returned pointer does not modify the original BSTR data.