为什么我们需要语法产生式基础说明符的最后两个定义?
Why do we need the last two definitions for the grammar production base-specifier?
在 [class.derived.general]/1 中,我们对 base-specifier 有以下定义:
碱基说明符:
attribute-specifier-seqopt class-or-decltype
属性说明符序列opt virtual
访问说明符opt class-或-decltype
属性说明符序列opt访问说明符virtual
opt class-或-decltype
为什么我们需要上面的第二个和第三个定义?为什么 virtual
在第二个定义中是必需的,而在第三个定义中是可选的?
Why do we need the second and the third definitions above?
语法糖。因此,class Derived: public virtual Base
和 class Derived: virtual public Base
都是有效的。当需要虚拟继承时,比每年查找一次订单要好得多。
Why is the virtual
required in the second definition while it's optional in the third?
请注意,第二个选项具有强制性 virtual
,第三个选项具有强制性 access-specifier。因此,class Derived: virtual Base
和 class Derived: public Base
都是有效的。并且它可以拥有上述优势,而不是将其定义为
属性说明符序列opt virtual
opt 访问说明符opt class-or-decltype
也许可以用不同的方式来表述,但我想不出更好的方式来表达这两个方面。
在 [class.derived.general]/1 中,我们对 base-specifier 有以下定义:
碱基说明符:
attribute-specifier-seqopt class-or-decltype
属性说明符序列opt virtual
访问说明符opt class-或-decltype
属性说明符序列opt访问说明符virtual
opt class-或-decltype
为什么我们需要上面的第二个和第三个定义?为什么 virtual
在第二个定义中是必需的,而在第三个定义中是可选的?
Why do we need the second and the third definitions above?
语法糖。因此,class Derived: public virtual Base
和 class Derived: virtual public Base
都是有效的。当需要虚拟继承时,比每年查找一次订单要好得多。
Why is the
virtual
required in the second definition while it's optional in the third?
请注意,第二个选项具有强制性 virtual
,第三个选项具有强制性 access-specifier。因此,class Derived: virtual Base
和 class Derived: public Base
都是有效的。并且它可以拥有上述优势,而不是将其定义为
属性说明符序列opt virtual
opt 访问说明符opt class-or-decltype
也许可以用不同的方式来表述,但我想不出更好的方式来表达这两个方面。