一个类是一种类型。它的名字成为其中的一个类名(9.1) 范围。
class-name: identifier simple-template-id
类别指定者和详细类型指定者(7.1.6.3) 用于制作类名。类的对象由(可能为空)组成 成员序列和基类对象。
class-specifier: class-head { member-specificationopt } class-head: class-key attribute-specifier-seqopt class-head-name class-virt-specifier-seqopt base-clauseopt class-key attribute-specifier-seqopt base-clauseopt class-head-name: nested-name-specifieropt class-name class-virt-specifier-seq: class-virt-specifier class-virt-specifier-seq class-virt-specifier class-virt-specifier: final explicit class-key: class struct union
class-virt-speci-er-seq应包含 每个最多一个 class-virt-speci fi er。
班级负责人省略的班级指定人员 班级名称定义了一个未命名的 类。 [注意:一个未命名的类因此 不能是最终的或明确的。 - 结束 注意]
这里:他们使用了 - >最后,显式为class-virt-speci fi er:
为此我应该这样使用:
1) struct A{ void f();};
struct B final : A{void f();};
int main() { return 0; }
2) struct A{ void f();};
struct B explicit : A{void f();};
int main() { return 0; }
etc...
任何人都可以正确使用...如果错了
AND:请告诉我哪个编译器支持这个功能。(我知道VC ++,GCC 4.6.0支持很多功能) 但海湾合作委员会不支持上述功能。请告诉我该怎么做才能检查这个?
答案 0 :(得分:1)
看起来它没问题,但我认为任何编译器都没有实现它。
它也可能会有变化,因为有要求删除它:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3234.pdf