Class declaration
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
<metanoindex/>
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) | (seit C++11) | |||||||
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) | ||||||||
Ancestor List
A list of classes that have already bee fully defined optionally prefixed with an access specifier
Object List
An optional list of instances of the previously defined class
Erklärung
- 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
Notes
(seit C++11) A default value can be assigned to data members inside the class body (ie: not necessarily in a constructor)
Siehe auch
Beispiel
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()
{
//...
}