Overview
C++ links/resources.
TO DO:
- Constant expressions (
const
andconstexpr
) (10.4)- A class with a
constexpr
constructor is called a literal type.
- Implicit type conversion (10.5)
nothrow
forms ofnew
anddelete
(11.2.4)- initializer lists
- “using” for type aliases
Links
General links:
Comparing C and C++:
Stroustrup
New features in C++11
move semantics
variadic templates
rvalue references
forwarding references
initializer lists
static assertions
auto
lambda expressions
decltype
template aliases
nullptr
strongly-typed enums
attributes
constexpr
delegating constructors
user-defined literals
explicit virtual overrides
final specifier
default functions
deleted functions
range-based for loops
special member functions for move semantics
converting constructors
explicit conversion functions
inline namespaces
non-static data member initializers
right angle brackets
ref-qualified member functions
trailing return types
Figure out
- namespaces
- throw/exceptions
- try/catch
Miscellany
- using {} for initialization instead of =
- catches narrowing conversions like “int a {3.14};”
- “auto” type deduction from initializer, “auto b = true”
- “constexpr” as long as expression really is a constant (eventually)
- “constexpr int i = square(?)”
- any functions invoked must also be declared as “constexpr”
- declared size of array must be constant expression
- range-for-statement (for any sequence of elements)
- int v[] = {1,2,3,4,5};
- for (auto x : v)
- for (auto x : {1,2,3,4,5})
- for (auto& x : v) { ++x; }
- references in declarations
- kinds of classes
- concrete
- abstract
Standard library
std::list
std::string
Coding style
- use “const” as much as possible, to qualify class methods
- functions defined in a class are inlined by default
- define non-member routines if they don't need access to the class
Internal C++ links
- C++ iterators (MUCH TO DO)
- C++ debugging (TO DO)