让我们说我的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 _?
我如何保证正确的人被召唤?
谢谢!