C++ language
Template:cpp/language/sidebar This is a brief reference of available C++ constructs.
Contents |
General topics
Preprocessor
Comments
Keywords
ASCII chart
Escape sequences
Flow control
Conditional execution statements
Different code paths are executed according to the value of given expression
Iteration statements
The same code is executed several times
- for executes loop
- range-for executes loop over a range Template:mark c++11 feature
- while executes loop, checking condition before each iteration
- do-while executes loop, checking condition after each iteration
Jump statements
Continue execution at a different location
- continue skips the remaining part of the enclosing loop body
- break terminates the enclosing loop
- goto continues execution in another location
- return terminates execution of the enclosing function
Functions
The same code can be reused at different locations in the program
- function declaration
- exception specifications enforces the function to throw only specific exceptions or not to throw at all (deprecated)
- noexcept specifier enforces the function not to throw any exceptions Template:mark c++11 feature
- inline specifier hints the compiler to insert a function's body directly into the calling code
Exceptions
Exceptions are a more robust way to signal error condition than function return codes or global error variables
- throw expression signals an error and transfers control to error handler
- try-catch block catches exceptions originating from specific block of code
Namespaces
Namespaces provide a way to prevent name clashes in large projects
Types
- fundamental types define basic character, integer and floating point types
- compound types define types, holding several members of (potentially) different types
- function types define types, holding a pointer to a function
- decltype specifier defines a type, equivalent to the type of an expression Template:mark c++11 feature
Specifiers
- cv specifiers specifies constness and volatility of a type
- storage duration specifiers specifies storage duration of a type
- constexpr specifier specifies that the value of a variable or function can be computed at compile time Template:mark c++11 feature
- auto specifier specifies that the actual type shall be defined from the expression, assigned to the variable Template:mark c++11 feature
- alignas specifier specifies that the storage for the variable should be aligned by specific amount Template:mark c++11 feature
Operators
- operators allows the use of syntax commonly found in mathematics
Common operators | ||||||
---|---|---|---|---|---|---|
assignment | increment decrement |
arithmetic | logical | comparison | member access |
other |
a = b |
++a |
+a |
!a |
a == b |
a[...] |
function call |
a(...) | ||||||
comma | ||||||
a, b | ||||||
conditional | ||||||
a ? b : c | ||||||
Special operators | ||||||
static_cast converts one type to another related type |
- operator precedence the order in which operators are evaluated
- alternative representations alternative spellings for some of the operators
Utilities
- Types
- typedef declaration creates a synonym for a type
- type alias declaration creates a synonym for a type
- attributes defines additional information about variable Template:mark c++11 feature
- Casts
- standard conversions implicit conversions from one type to another
-
const_cast
conversion -
static_cast
conversion -
dynamic_cast
conversion -
reinterpret_cast
conversion
- Memory allocation
- new expression allocates memory dynamically
- delete expression deallocates memory dynamically
Classes
Classes provide the concept of object-oriented programming in C++
- declaring a class
- access specifiers
- friend specifier grants access privileges to private/protected parts for non-member classes or functions
- initializer lists
Special member functions
- default constructor initializes the object with default contents
- copy constructor initializes the object with the contents of another object
- move constructor initializes the object with the contents of other, temporary object, minimizing copying overhead Template:mark c++11 feature
- assignment operator replaces the contents of the object with the contents of another object
- move assignment operator replaces the contents of the object with the contents of other, temporary object, minimizing copying overhead Template:mark c++11 feature
- destructor releases claimed resources
Templates
Allows functions and classes to operate on generic types