Класс - это тип.Его имя становится именем класса (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
Класс-virt-specifer-seq должен содержать не более одного из каждого класса-virt-specifer.
Спецификатор класса, глава класса которого опускает имя-класса, определяет безымянный класс.[Примечание: безымянный класс, таким образом, не может быть окончательным или явным.- примечание конца]
ЗДЕСЬ: они использовали -> final, явный как class-virt-specifer:
для этого я должен использовать так:
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...
Может ли кто-нибудь подсказать правильное использование thi ... если оно неверно
И: Скажите, пожалуйста, какой компилятор будет поддерживать эту функцию (я знаю VC ++, GCC 4.6.0поддерживает много функций) Но GCC не поддерживает вышеупомянутую функцию .. Пожалуйста, предложите мне, что сделать, чтобы проверить это?