Grammar of Classes

class-specifier:

class-head member-listopt }

class-head:

class-key ambient-modelopt identifieropt base-specopt
class-key ambient-modelopt class-name  base-specopt

member-list:

member-declaration  member-listopt
access-specifier : member-listopt

member-declaration:

decl-specifiersopt member-declarator-listopt ;
function-definition ;opt
qualified-name ;

member-declarator-list:

member-declarator
member-declarator-list , member-declarator

member-declarator:

ms-modifier-listopt declarator pure-specifieropt
identifieropt : constant-expression

pure-specifier:

=  0

base-spec:

: base-list

base-list:

base-specifier
base-list ,   base-specifier

base-specifier:

complete-class-name
virtual access-specifieropt complete-class-name
access-specifier virtualopt complete-class-name

access-specifier:

private
protected
public

conversion-function-name:

operator conversion-type-name

conversion-type-name:

type-specifier-list  ptr-operatoropt

ctor-initializer:

: mem-initializer-list

mem-initializer-list:

mem-initializer
mem-initializer , mem-initializer-list

mem-initializer:

complete-class-name ( expression-listopt )
identifier ( expression-listopt )

operator-function-name:

operator operator

operator:  one of

new   delete
+            *      /       %      ^      &      |       ~
!       =      <      >       +=    –=    *=    /=      %=
^=    &=    |=    <<      >>    >>=   <<=   ==      !=
<=    >=    &&   ||       ++    ––    ,      –>*      –>
()      []