我在c ++标准(§9.5/ 1)中看到了以下内容:
工会不得有基类.联合不得用作基类.
联合可以具有成员函数(包括构造函数和析构函数),但不具有虚函数(10.3)
从上面,union也可以有构造函数和析构函数.
那么为什么在继承中不允许这样做?
编辑:回答评论:
如果允许union作为基类,则其数据可以由派生类使用.如果派生类有兴趣只使用union的一个成员,则这种方式可用于保存内存.我认为,这是不正当的继承.在这种情况下,在派生类中使用union更好吗?
如果允许union作为派生类,它可以使用基类服务.例如,如果Union有多种类型的数据.众所周知,只能使用一种数据.对于每种类型的数据,存在基类以为该特定类型提供服务.在这种情况下,可以使用多重继承来获取Union中所有类型数据的所有基类的服务.这也让我觉得继承的使用不当.但是,在这一点上是否有任何等效的概念来实现内容?
只是我的想法......
c++ ×1