【发布时间】:2011-05-20 08:09:51
【问题描述】:
一个简单的问题,但我不确定它在 C++ 中做了什么。
当我有一个具有 _bstr_t 成员的类时。 我想知道删除对象时是否释放了成员:
class A {
_bstr_t foo("Testing");
}
A 类没有 dtor。那么默认的 dtor 是调用类 A 的每个成员的 dtor 吗?
尤其是 _bstr_t 因为它通过 SysAllocString 分配一个字符串。
谢谢
【问题讨论】:
一个简单的问题,但我不确定它在 C++ 中做了什么。
当我有一个具有 _bstr_t 成员的类时。 我想知道删除对象时是否释放了成员:
class A {
_bstr_t foo("Testing");
}
A 类没有 dtor。那么默认的 dtor 是调用类 A 的每个成员的 dtor 吗?
尤其是 _bstr_t 因为它通过 SysAllocString 分配一个字符串。
谢谢
【问题讨论】:
是的,_bstr_t 析构函数将被调用——编译器会处理这个问题。即使它没有用户定义的析构函数,编译器也会发出代码,通过调用它们的析构函数来销毁所有完全构造的子对象。
由于_bstr_t 有一个重要的析构函数负责调用SysFreeString(),因此将调用析构函数并释放BSTR。
【讨论】: