Class declaration
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google.
Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке. Щёлкните здесь, чтобы увидеть английскую версию этой страницы |
Содержание |
[править] Синтаксис
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) | (начиная с 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
[править] Объяснение
- 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
[править] Заметки
(начиная с C++11) A default value can be assigned to data members inside the class body (ie: not necessarily in a constructor)
[править] См. также
[править] Пример
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() { //... }