gpt4 book ai didi

c++ - 在这种情况下, union 成员的成员会调用自己的析构函数吗?

转载 作者:行者123 更新时间:2023-11-28 01:16:02 26 4
gpt4 key购买 nike

一个带有空 dtor 的类,当它自己的 dtor 被显式地从 union 内调用时,会调用它的成员 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;
};

最佳答案

析构函数的执行定义为执行析构函数的主体,然后还执行对成员和基类的析构函数的调用。伪析构函数调用执行析构函数。

所以是的,在这种情况下,伪析构函数调用将正确地销毁像素

关于c++ - 在这种情况下, union 成员的成员会调用自己的析构函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58685194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com