background image

  }

  TestUnion::TestUnion(long l) : data_(l)
  {
  }

  TestUnion::DataUnion::DataUnion(const char* ch) : ch_(ch)
  {
  }

  TestUnion::DataUnion::DataUnion(long l) : l_(l)
  {
  }

  int main (void)
  {
  return 0;
  }

  正如上面程序所示,C++中的 union 也可以包含构造函数,但是,这虽然被语言所支
持,但实在是一种不佳的编程习惯,因此,我不打算对上面的程序进行过多的说明。我更
推荐如下的编程风格:

  class TestUnion
  {
  union DataUnion
  {
  const char* ch_;
  long l_;
  } data_;
  
  public:
  TestUnion(const char* ch);
  TestUnion(long l);
  };

  TestUnion::TestUnion(const char* ch)
  {
  data_。ch_ = ch;
  }

  TestUnion::TestUnion(long l)
  {
  data_。l_ = l;