A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../language/classes.html below:

Classes - cppreference.com

A class is a user-defined type.

A class type is defined by class-specifier, which appears in decl-specifier-seq of the declaration syntax. See class declaration for the syntax of the class specifier.

A class can have the following kinds of members:

1) data members:

2) member functions:

3) nested types:

b)

aliases of existing types, defined with

typedef or type alias (since C++11)

declarations

c)

the name of the class within its own definition acts as a public member type alias of itself for the purpose of

lookup

(except when used to name a

constructor

): this is known as

injected-class-name 5) member templates

(

variable templates, (since C++14)

class templates or function templates) may appear in the body of any non-local class/struct/union.

All members are defined at once in the class definition, they cannot be added to an already-defined class (unlike the members of namespaces)

A member of a class T cannot use T as its name if the member is

However, a non-static data member may use the name T as long as there are no user-declared constructors.

A class with at least one declared or inherited virtual member function is polymorphic. Objects of this type are polymorphic objects and have runtime type information stored as part of the object representation, which may be queried with dynamic_cast and typeid. Virtual member functions participate in dynamic binding.

A class with at least one declared or inherited pure virtual member function is an abstract class. Objects of this type cannot be created.

A class with a constexpr constructor is a LiteralType: objects of this type can be manipulated by constexpr functions at compile time.

(since C++11) [edit] Properties of classes Trivially copyable class

A trivially copyable class is a class that

Standard-layout class

A standard-layout class is a class that

A standard-layout struct is a standard-layout class defined with the class keyword struct or the class keyword class. A standard-layout union is a standard-layout class defined with the class keyword union.

(since C++11) [edit] Implicit-lifetime class

An implicit-lifetime class is a class that

Notes: the implicit-lifetime property is clarified by defect report P0593R6.

[edit] POD class

A POD class is a class that

(until C++11) (since C++11)

A POD struct is a non-union POD class. A POD union is a union that is a POD class.

(deprecated in C++20) [edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior CWG 148 C++98 POD classes could not contain pointers to member,
which are themselves POD (scalar) types restriction removed CWG 383 C++98 copy assignment operators or destructors could be
user-declared in POD classes if they are not defined not allowed CWG 1363 C++11 a class that has both trivial default constructors and non-trivial
default constructors at the same time could be trivial it is non-trivial CWG 1496 C++11 a class that only has constructors that
are all defined as deleted could be trivial it is non-trivial CWG 1672 C++11 a class could be a standard-layout class
if it has multiple empty base classes it is not a standard-layout class CWG 1734 C++11 a trivially copyable class could not have non-trivial
deleted copy/move constructors/assignment operators can be trivial if deleted CWG 1813 C++11 a class was never a standard-layout class if it has a
base class that inherits a non-static data member it can be a standard-layout class CWG 1881 C++11 for a standard-layout class and its base classes,
unnamed bit-fields might be declared in a
different class declaring the data members all non-static data members
and bit-fields need to be first
declared in the same class CWG 1909 C++98 a member template could have the same name as its class prohibited CWG 2120 C++11 the definition of M(X) in determining a standard-
layout class did not consider the case of
a class whose first member is an array addressed this case in
the definition of M(X) CWG 2605 C++98 an implicit-lifetime class could have a user-provided destructor prohibited

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4