c ++ dtor释放_bstr_t内存

mat*_*thk 0 c++ bstr

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

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

class A {
    _bstr_t foo("Testing");
}
Run Code Online (Sandbox Code Playgroud)

A堂课没有dtor.那个默认的dtor是否会调用该类成员的dtor A

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

谢谢

sha*_*oth 5

是的,_bstr_t析构函数将被调用 - 编译器将负责这一点.即使它没有用户定义的析构函数,编译器也会发出代码,通过调用它们的析构函数来销毁所有完全构造的子对象.

由于_bstr_t有一个非平凡的析构函数负责调用SysFreeString()析构函数将被调用并释放BSTR.