gpt4 book ai didi

C++语法产生: class-head

转载 作者:行者123 更新时间:2023-11-30 01:09:03 24 4
gpt4 key购买 nike

下面您将在 [class]/1 中找到语法产生式 class-head 的定义。 :

class-head:
  class-key attribute-specifier-seqopt class-head-name class-virt-specifieropt base-clauseopt
  class-key attribute-specifier-seqopt base-clauseopt

在段落的末尾,您会发现以下内容:

A class-specifier whose class-head omits the class-head-name defines an unnamed class. [ Note: An unnamed class thus can’t be final. —end note ]

从上面的内容中,我了解到命名类的语法,即具有class-head-name的类,由上面的第一个定义给出,而未命名的语法类由第二个定义给出。

一个简单的问题:将上面的两个定义替换为第一个是不可能的,只需将 class-head-name 替换为 class-head-nameopt 在里面?

或者说得更清楚些。难道不能用下面的 class-head 替换上面的定义吗?

类长:
class-key attribute-specifier-seqopt class-head-nameopt class-virt-specifieropt base -子句opt

最佳答案

没有。如果你这样做了,那么就会有歧义。 class final 可能表示名为 final 的命名类或使用 final 作为虚拟说明符的未命名类。

由于语法的定义方式,class final 始终表示名为final 的类。语法是明确的。括号内的符号不是规范性文本;它只是解释了这两个定义的原因

现在,您可以通过添加另一个术语来以不同的方式定义语法以实现相同的效果:

class-head:

  class-key attribute-specifier-seqopt class-head-name-stuffopt base-clauseopt

class-head-name-stuff:

  class-head-name class-virt-specifieropt

关于C++语法产生: class-head,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40917441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com