Joã*_*nso 1 c++ language-lawyer c++17
下面你会在[class]/1中找到语法生成类头的定义:
class-head:
class-key attribute-specifier-seq opt class-head-name class-virt-specifier opt base-clause opt
class-key attribute-specifier-seq opt base-clause opt
在段落的末尾,您将找到以下内容:
一类符,其类头省略了类头名 定义了一个无名类.[注意:一个未命名的类因此不能是 最终的. - 尾注]
从上面开始,我收集了一个命名类的语法,即一个带有类头名的类,由上面的第一个定义给出,而一个未命名的类的语法由第二个定义给出.
一个简单的问题:不可能用第一个替换上面的两个定义,只需用class-head-name opt替换class-head-name就可以了?
或者更清楚.以下是不可能为class-head替换上面的定义?
class-head:
class-key attribute-specifier-seq opt class-head-name opt class-virt-specifier opt base-clause opt
不,如果你这样做,那就会有歧义.class final可能意味着一个名为class的命名类final或一个final用作虚拟说明符的未命名类.
由于语法的定义方式,class final 总是指一个名为的类final.语法是明确的.括号内的符号不是规范性文本; 它只是解释了两个定义的原因.
现在,您可以通过添加另一个术语来定义语法以实现相同效果的不同方式:
类头:
class-key attribute-specifier-seq opt class-head-name-stuff opt base-clause opt
类头名-的东西:
class-head-name class-virt-specifier opt
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |