class keyword

   
class keyword Declares a class or template parameter, or elaborates a type name

  class-specifier  ::=  class-head  { [  member-specification  ] }  class-head  ::=  class-key  [  identifier  ] [  base-clause  ]  class-key nested-name  ::  identifier  [  base-clause  ]  class-key  [  nested-name  ::]  template-id  [  base-clause  ]  class-key  ::= class       struct  union  member-specification  ::=  member-decl  [  member-specification  ]  access-specifier  : [  member-specification  ]  member-decl  ::= [  decl-specifier-seq  ] [  member-declarator-list  ] ;  function-definition  [;]  qualified-id  ;  using-decl   template-decl   member-declarator-list  ::=  member-declarator   member-declarator-list  ,  member-declarator   member-declarator  ::=  declarator  [= 0]  declarator  [=  constant-expression  ]      [  identifier  ] :  constant-expression   base-clause  ::= :  base-specifier-list   base-specifier-list  ::=  base-specifier   base-specifier-list  ,  base-specifier   base-specifier  ::= [  base-modifiers  ] [::] [  nested-name  ::]  class-name   base-modifiers  ::= virtual [  access-specifier  ]  access-specifier  [virtual]  access-specifier  ::= private  protected  public  class-name  ::=  identifier   template-id   type-parm  := class [  identifier  ] [=  type-id  ]       template <  template-parm-list  > class [  identifier  ] [=  id-expression  ]  elaborated-type-specifier  :=  class-key  [::] [  nested-name  ::]  identifier   class-key  [::] [  nested-name  ::] [template]  template-id  

The class keyword introduces a class declaration or definition, names a type template parameter ( type-parm ), or names a class type in an elaborated-type-specifier . In a class definition, the only difference between class and struct is that the default access level is private for class and public for struct .

When declaring a type template parameter, typename and class are interchangeable.

Example

 template<  class  T> // Can use typename instead of class  class  point { public:   point(T x = 0, T y = 0); private:   T x_, y_; }; point<int> pt1;  class  point<int> pt2; // redundant use of class 

See Also

declaration , declarator , expression , function , identifier , private , protected , public , struct , template , type , typename , union , virtual , Chapter 6, Chapter 7

   


C++ in a Nutshell
C++ in a Nutshell
ISBN: 059600298X
EAN: 2147483647
Year: 2005
Pages: 270
Authors: Ray Lischner

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net