相关疑难解决方法(0)

是联盟成员的析构函数

C++ 11允许在以下标准中使用标准布局类型union:Union的成员具有用户定义的构造函数

我的问题是:我是否保证在union超出范围时会调用自定义析构函数?

我的理解是我们必须在切换时手动销毁和构建:http://en.cppreference.com/w/cpp/language/union#Explanation

但是像这样的例子怎么样:

{
    union S { string str;
              vector<int> vec;
              ~S() {} } s = { "Hello, world"s };
}
Run Code Online (Sandbox Code Playgroud)

当s超出范围时,我是否将内存泄漏到堆上分配的字符串,因为我没有调用string析构函数?

c++ destructor unions standard-layout c++11

21
推荐指数
1
解决办法
5661
查看次数

标签 统计

c++ ×1

c++11 ×1

destructor ×1

standard-layout ×1

unions ×1