c++ - 在这种情况下,工会成员的成员会调用自己的析构函数吗?
问题描述
具有空 dtor 的类是否会在从联合中显式调用它自己的 dtor 时称其为成员的 dtor?
这很难说,希望伪代码更直接。在这个例子中,会隐式Texture::~Texture()
调用吗?source.bitmap.pixels.~vector()
struct Bitmap{
~Bitmap(){} // empty dtor
// members
std::vector<uint8> pixels; // <-- will this dealloc when ~Bitmap() is called manually?
};
struct Texture{
~Texture(){
// assume sourceType is 1
switch(sourceType){
case 1:
source.bitmap.~Bitmap();
break;
}
}
// members
uint sourceType;
union Source{
Source(){}
~Source(){}
// members
Bitmap bitmap;
}source;
};
解决方案
析构函数的执行被定义为执行析构函数的主体,然后还执行对成员和基的析构函数的调用。伪析构函数调用执行析构函数。
pixels
所以是的,在这种情况下 ,伪析构函数调用将正确销毁。
推荐阅读
- python - 在使用 pydantic 模型的 python 中,如何使用未知键访问嵌套字典?
- jenkins - 詹金斯无法从私人存储库中提取图像
- sql-server - 部署包时出现 SSIS 错误 执行用户定义或聚合“deploy_project_internal”期间发生 .Net Framework 错误:
- python - 无效输入后如何循环回第一行?Python
- java - Java swing paint 不显示内部组件
- python - 我无法导入 tensorflow-rocm
- javascript - Vue.js - Axios 获取请求返回 [object Object]
- python - 为 Conv1d 输入层找到正确的 input_shape
- docker - 如何使用 metricbeat 和 docker 监控系统进程?
- android - React-Native:OAuth 在某些用户的设备上不起作用