将 _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.
我是 C++ 新手,所以请多多包涵。我知道 _bstr_t
只是 BSTR
的包装器 class 但是,如 MSDN 文档中所示,_bstr_t
没有将自身转换为 [=12= 的运算符].
那么我可以将 _bstr_t
对象传递给需要 BSTR
作为参数的函数吗,它安全吗?
或者有更好的方法吗?我特别不希望任何内存泄漏。
我看过很多文章,所以对此感到困惑。对不起,如果这是一个微不足道的问题。
_bstr_t
does not have an operator to convert itself toBSTR
是也不是。 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.