在C ++联合中,哪个成员析构函数被union析构函数调用?

时间:2016-06-09 06:06:18

标签: c++ c++11 c++14

让我们说我的C ++类有一个私人联盟。

class Thingy
{
public:
    explicit Thingy( const std::string & v ); // initializes u.value_
    explicit Thingy( const std::share_ptr & p ); // initializes u.ptr_

    ~Thingy();

    // ... other functions ...

private:

    union Value
    {
        std::string value_;
        std::shared_ptr ptr_;
    };

    enum Tag
    {
        String,
        Pointer
    };

    Tag tag_;
    Value u_;
};

当程序调用Thingy :: Value :: ~Value()的隐式析构函数时,会调用哪个成员变量的析构函数?一个用于value_或一个用于ptr _?

我如何保证正确的人被召唤?

谢谢!

0 个答案:

没有答案