C++中联合体中的“protected”有什么意义?

13

受保护的成员或函数可以用于什么?

你不能从union继承,因此没有子类可以访问它。它是否提供功能用途,还是只是因为删除它会很麻烦而存在?


2
这是为了完整性而存在的。 - StoryTeller - Unslander Monica
@StoryTeller 详细说明一下吧! :-) - Grimm The Opiner
@StoryTeller,你是在说protected和private继承完全没有用处吗? - Stefan
@Stefn,不完全正确。但是如果你发现自己在私有继承方面存在问题,可能需要重新考虑设计,转而使用组合。 - StoryTeller - Unslander Monica
@StoryTeller,所以它们不是无用的,但很少需要使用?我同意这一点。我想确保联合中的受保护级别不是相同的情况。 - Stefan
显示剩余2条评论
1个回答

12
在一个联合(union)中使用protected关键字与使用private完全等效,但允许使用这种语法不会产生任何危害,并避免了对于unionstruct/class之间的额外特殊处理以及额外区别(这些在标准文档中一起描述)。
老实说,我认为在联合(union)中使用protected关键字是可行的,但没有对于该行为进行差异化处理只是为了将其作为标准的“第N个”特殊情况;也许标准委员会没有想到要区分这种行为,因为这是一个非常奇怪的边角情况,但按照当前规范来使用并不会造成任何危害。

那么它只是在那里,因为删除它比保留它更麻烦? - Stefan
@Stefan:我会这么说;为什么要费心去创建特殊情况呢?(好吧,这是C++,对于每件事情都有特殊情况和UB,但重点在于此) - Matteo Italia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接