0

一个简单的问题,但我不确定它在 C++ 中做了什么。

当我有一个有 _bstr_t 成员的类时。我想知道删除对象时是否释放了成员:

class A {
    _bstr_t foo("Testing");
}

该类A没有 dtor。那么默认的 dtor 是调用类的每个成员的 dtorA吗?

特别是对于 _bstr_t,因为它通过 SysAllocString 分配一个字符串。

谢谢

4

1 回答 1

5

是的,_bstr_t析构函数会被调用——编译器会处理这个问题。即使它没有用户定义的析构函数,编译器也会发出代码,通过调用它们的析构函数来销毁所有完全构造的子对象。

由于_bstr_t有一个重要的析构函数负责调用SysFreeString()该析构函数并将被调用并释放 BSTR。

于 2011-05-20T08:11:38.250 回答