C 语法生产:班级
C++ Grammar production: class-head
下面您会在[class]/1:
中找到语法生产的定义 class-headclass-head:
   class-key属性seqopt class-head-name 类virt专业人士 opt base-clause opt
   class-key属性seqifier-seqopt base-clause opt
在段落的末尾,您会发现以下内容:
a 类别 class-head 省略了 class-head-name 定义一个不愿透露姓名的课程。[注意:一个未命名的课程不能 最终。 - 末尾注]
从上面我收集到一个指定类的语法,即带有a class-head-name 的类,由上面的第一个定义给出,而语法则是未命名的语法类由第二个定义给出。
一个简单的问题:不可能通过 class-head-name 将上述两个定义替换为第一个定义 在其中?
或更清楚。对于以下内容,无法替换上述 class-head 的定义?
class-head:
   class-key属性seqifier-seq opt class-head-name opt class-virt-virt-specifier opt opt opt base-clause opt
no。如果您这样做了,那么会有歧义。class final
可能意味着一个名为final
的命名类或使用final
作为虚拟规范的未命名类。
由于语法的定义是如何定义的,因此 class final
始终表示 一个名为 final
的类。语法是明确的。包围的符号不是规范文本。它简单地解释了两个定义的原因。
现在,您可以通过添加另一个术语来定义语法以实现相同效果的不同方法:
类头:
   class-key属性specifier-seq
opt class-head-name-stuff opt opt base-clause opt opt class-head-name-stuff:
   class-name class-virt-name-virt-specifier
opt
你不能做
class-head:
class-key属性 - 属性 - seq opt class-head-name opt class-virt-specifier opt opt base-clause opt
,因为那将允许 class-head 为
class-key class-virt-depcifier
原始的。
no,因为那时可能会忽略 class-head-name ,同时仍指定 class-virt-name-name 。
class-virt-dexifier的语法是:
class-virt-specifier :
   final
,正如您提到的,未命名的类不能是 final 。
- 1d 智能指针不适用于语法 (*)++
- QT在错误的班级中寻找空位
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 班级的朋友是不可接近的
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 使用基类指针调用基类的值构造函数的语法是什么?
- 很好的语法来获取对向量/数组数据的大小引用?
- C++语法运算符功能?
- C 中的对象依赖性.什么是班级组成的语法
- 班级的正向声明:语法错误
- C 语法生产:班级