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

是否将一个具有空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;
};
yuank888 回答:在这种情况下,工会成员的成员会调用自己的析构函数吗?

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

是的,在这种情况下,伪析构函数调用将正确销毁pixels

,

是的,它将隐式调用所有成员的析构函数,如果您的类是从另一个类派生的,它也将调用基类的析构函数。

本文链接:https://www.f2er.com/3169908.html

大家都在问