相关疑难解决方法(0)

为什么union不能用于继承?

我在c ++标准(§9.5/ 1)中看到了以下内容:

工会不得有基类.联合不得用作基类.

联合可以具有成员函数(包括构造函数和析构函数),但不具有虚函数(10.3)

从上面,union也可以有构造函数和析构函数.

那么为什么在继承中不允许这样做?

编辑:回答评论:

  1. 如果允许union作为基类,则其数据可以由派生类使用.如果派生类有兴趣只使用union的一个成员,则这种方式可用于保存内存.我认为,这是不正当的继承.在这种情况下,在派生类中使用union更好吗?

  2. 如果允许union作为派生类,它可以使用基类服务.例如,如果Union有多种类型的数据.众所周知,只能使用一种数据.对于每种类型的数据,存在基类以为该特定类型提供服务.在这种情况下,可以使用多重继承来获取Union中所有类型数据的所有基类的服务.这也让我觉得继承的使用不当.但是,在这一点上是否有任何等效的概念来实现内容?

只是我的想法......

c++

18
推荐指数
2
解决办法
6619
查看次数

标签 统计

c++ ×1