Class declaration
From cppreference.com
Contents |
[edit] Syntax
class identifier { class_body } object_list ; | (1) | ||||||||
class identifier : ancestor_list { class_body } object_list ; | (2) | ||||||||
class identifier ; | (3) | ||||||||
class identifier final opt_ancestors_and_body | (4) | (since C++11) | |||||||
[edit] Class Body
A list of member and friend declarations and access specifiers:
public: | (1) | ||||||||
protected: | (2) | ||||||||
private: | (3) | ||||||||
friend friend_declaration | (4) | ||||||||
member_declaration | (5) | ||||||||
static member_declaration | (6) | ||||||||
nested_type_declaration | (7) | ||||||||
[edit] Ancestor List
A list of classes that have already bee fully defined optionally prefixed with an access specifier
[edit] Object List
An optional list of instances of the previously defined class
[edit] Explanation
- Defines a class and its member
- Defines a class inheriting other classes
- Forwards declares a class
- Defines a class that cannot be derived from ( see final )
If friend or member functions have their body defined inside the class body, they are implicitly inlined
[edit] Notes
(since C++11) A default value can be assigned to data members inside the class body (ie: not necessarily in a constructor)
[edit] See also
[edit] Example
class C; class D : public B // B needs to be defined { private: C *ptr_c; // a pointer/reference to C can be used as C has been forward declared double x = 12.3; // C++11 inline data member initialization static const int sci = 1; // this is valid in C++98 as well public: typedef B parent_type; // inline function virtual parent_type foo() const { return B(); } // non-inline function declaration. needs to be defined externally void bar(); } D_obj; // An object of type D is defined // definition of a class method outside the class void D::bar() { //... }