C++
A compiled, statically typed, general-purpose programming language used extensively for game engines, real-time systems and performance-sensitive software.
Also encountered as: C plus plus
Appears in: Lesson 01, Lesson 02, Lesson 03, Lesson 04, Lesson 05, Lesson 06, Lesson 07, Lesson 08, Lesson 09, Lesson 10, Lesson 11, Lesson 12, Lesson 13, Lesson 14, Lesson 15, Lesson 16, Lesson 17, Lesson 18, Lesson 19, Lesson 20, Lesson 21, Lesson 22, Lesson 23, Lesson 24
Back to glossary top ↑
C++ reference
A C++ alias bound to an existing object. A reference must normally refer to a valid object and cannot later be reseated.
Also encountered as: references, C++ references
Appears in: Lesson 03, Lesson 04, Lesson 07, Lesson 08, Lesson 13, Lesson 14, Lesson 15, Lesson 16, Lesson 17, Lesson 18, Lesson 19, Lesson 20, Lesson 21, Lesson 23
Back to glossary top ↑
C++ template
A C++ declaration that describes a family of classes, functions or variables parameterised by types or compile-time values.
Also encountered as: template, templates, templated
Appears in: Lesson 07, Lesson 18, Lesson 19, Lesson 20, Lesson 21, Lesson 23
Back to glossary top ↑
cache
Small, fast storage that keeps recently or frequently used data close to the processor.
Also encountered as: CPU cache, processor cache, caches
Appears in: Lesson 04, Lesson 10, Lesson 12, Lesson 17, Lesson 22, Lesson 23
Back to glossary top ↑
cache locality
The tendency of a program to access nearby or recently used memory, allowing processor caches to work effectively.
Also encountered as: memory locality, locality, data locality
Appears in: Lesson 01, Lesson 10, Lesson 12, Lesson 17, Lesson 21
Back to glossary top ↑
call graph
A diagram or data structure showing which functions call which other functions.
Also encountered as: call graphs, call-graph, call-graphs
Appears in: Lesson 01
Back to glossary top ↑
call site
The exact location in source code where a function is invoked.
Also encountered as: call sites, call-site, call-sites
Appears in: Lesson 04, Lesson 06, Lesson 08, Lesson 15, Lesson 19, Lesson 21, Lesson 22, Lesson 23
Back to glossary top ↑
cast
An explicit request to treat or convert a value as another type. C++ provides named casts such as static_cast and dynamic_cast.
Also encountered as: casting, casts
Appears in: Lesson 06, Lesson 08, Lesson 13, Lesson 21, Lesson 23
Back to glossary top ↑
circular dependency
A dependency cycle in which two or more components require one another. In header files this often appears as cyclic includes.
Also encountered as: circular dependencies, circular call, circular calls, cyclic include, cyclic includes
Appears in: Lesson 06, Lesson 07
Back to glossary top ↑
class
A user-defined C++ type that groups data and functions into a description from which objects can be created.
Also encountered as: classes
Appears in: Lesson 01, Lesson 03, Lesson 07, Lesson 08, Lesson 12, Lesson 13, Lesson 14, Lesson 15, Lesson 16, Lesson 17, Lesson 18, Lesson 19, Lesson 20, Lesson 21, Lesson 22, Lesson 23, Lesson 24
Back to glossary top ↑
class template
A recipe for generating classes from one or more template arguments, such as the type of element a container stores.
Also encountered as: class templates
Appears in: Lesson 09, Lesson 20, Lesson 23
Back to glossary top ↑
code
Instructions expressed in a programming language. Source code is the human-readable form written by programmers.
Also encountered as: program code, source code
Appears in: Lesson 01, Lesson 02, Lesson 03, Lesson 04, Lesson 05, Lesson 06, Lesson 07, Lesson 08, Lesson 09, Lesson 10, Lesson 11, Lesson 12, Lesson 13, Lesson 14, Lesson 15, Lesson 16, Lesson 17, Lesson 18, Lesson 19, Lesson 20, Lesson 21, Lesson 22, Lesson 23, Lesson 24
Back to glossary top ↑
code bloat
An undesirable increase in executable size, sometimes caused when templates generate many similar machine-code versions.
Also encountered as: binary bloat
Appears in: Lesson 23
Back to glossary top ↑
command-line interface
A text-based way of interacting with a program by entering commands and arguments, often abbreviated to CLI.
Also encountered as: CLI, command line, command-line
Appears in: Lesson 05, Lesson 09
Back to glossary top ↑
compile time
The stage when source code is analysed and translated before the program runs.
Also encountered as: compile-time, compilation time
Appears in: Lesson 04, Lesson 07, Lesson 08, Lesson 10, Lesson 11, Lesson 12, Lesson 13, Lesson 16, Lesson 17, Lesson 18, Lesson 19, Lesson 20, Lesson 21, Lesson 23
Back to glossary top ↑
compiler
A program that translates source code into another form, typically object code or machine code, while reporting language errors.
Also encountered as: compilers, compile, compiled, compiling, compilation
Appears in: Lesson 01, Lesson 02, Lesson 03, Lesson 04, Lesson 05, Lesson 06, Lesson 07, Lesson 08, Lesson 09, Lesson 10, Lesson 12, Lesson 13, Lesson 14, Lesson 15, Lesson 16, Lesson 18, Lesson 19, Lesson 20, Lesson 21, Lesson 22, Lesson 23, Lesson 24
Back to glossary top ↑
compiler optimisation
A compiler transformation intended to improve properties such as speed or code size while preserving the program's required observable behaviour.
Also encountered as: compiler optimization, compiler optimisations, compiler optimizations, optimise, optimize, optimised, optimized
Appears in: Lesson 01, Lesson 04, Lesson 10, Lesson 12, Lesson 17, Lesson 20, Lesson 21
Back to glossary top ↑
complexity
A description of the time or memory an algorithm requires as a function of its input size.
Also encountered as: algorithmic complexity, computational complexity
Appears in: Lesson 01, Lesson 09, Lesson 12, Lesson 18, Lesson 19, Lesson 23
Back to glossary top ↑
composition
Building a type from objects of other types rather than inheriting their implementation. It represents a has-a relationship.
Also encountered as: object composition
Appears in: Lesson 18, Lesson 19, Lesson 21
Back to glossary top ↑
computability
The study of which problems can, in principle, be solved by an algorithm.
Also encountered as: computable
Appears in: Lesson 01
Back to glossary top ↑
concept
A C++20 feature that gives a readable name to requirements on template arguments and allows templates to be constrained.
Also encountered as: concepts, C++ concept, C++ concepts
Appears in: Lesson 08, Lesson 16, Lesson 23
Back to glossary top ↑
condition
An expression evaluated as true or false to control whether a branch or loop body executes.
Also encountered as: conditions, conditional expression
Appears in: Lesson 01, Lesson 05, Lesson 06, Lesson 08, Lesson 09, Lesson 10, Lesson 11, Lesson 12, Lesson 13, Lesson 16, Lesson 17, Lesson 18, Lesson 22
Back to glossary top ↑
conditional operator
The C++ ?: operator, which selects one of two expressions according to a Boolean condition. It is also called the ternary operator.
Also encountered as: ternary operator, ?: operator, conditional (ternary) operator
Appears in: Lesson 13
Back to glossary top ↑
const-correctness
Using const consistently so code clearly expresses which objects may be modified and which must remain unchanged.
Also encountered as: const correctness, const-correct
Appears in: Lesson 14, Lesson 18, Lesson 20, Lesson 22, Lesson 24
Back to glossary top ↑
constant
A named value that is not intended or permitted to change after it has been established.
Also encountered as: constants
Appears in: Lesson 01, Lesson 02, Lesson 07, Lesson 10, Lesson 11, Lesson 13, Lesson 17, Lesson 23
Back to glossary top ↑
constraint
A requirement that a template argument must satisfy before a templated declaration can be used.
Also encountered as: constraints, constrained template, constrained templates
Appears in: Lesson 01, Lesson 09, Lesson 18, Lesson 21, Lesson 23
Back to glossary top ↑
constructor
A special class function that establishes a new object's initial state when the object is created.
Also encountered as: constructors
Appears in: Lesson 03, Lesson 06, Lesson 14, Lesson 15, Lesson 18, Lesson 19, Lesson 20, Lesson 21, Lesson 22, Lesson 23, Lesson 24
Back to glossary top ↑
container
A data structure that stores a collection of objects, such as std::vector, std::array or std::map.
Also encountered as: containers, standard container, standard containers
Appears in: Lesson 03, Lesson 04, Lesson 14, Lesson 15, Lesson 16, Lesson 17, Lesson 18, Lesson 19, Lesson 21, Lesson 22, Lesson 23, Lesson 24
Back to glossary top ↑
contiguous memory
A sequence of adjacent memory locations. Arrays and std::vector store their elements contiguously.
Also encountered as: contiguous storage, contiguously
Appears in: Lesson 17
Back to glossary top ↑
control flow
The order in which a program executes statements, including branches, loops, calls and returns.
Also encountered as: flow control, execution flow
Appears in: Lesson 03, Lesson 10, Lesson 11, Lesson 12, Lesson 24
Back to glossary top ↑
conversion
Changing a value from one type or representation to another. A conversion may be implicit or explicitly requested.
Also encountered as: conversions, type conversion, type conversions
Appears in: Lesson 03, Lesson 05, Lesson 06, Lesson 08, Lesson 12, Lesson 13, Lesson 14, Lesson 17, Lesson 19, Lesson 20, Lesson 22, Lesson 23
Back to glossary top ↑
copy assignment
Assigning the state of one existing object to another existing object of the same type.
Also encountered as: copy assignment operator
Appears in: Lesson 24
Back to glossary top ↑
copy constructor
A constructor that creates a new object from an existing object of the same type.
Also encountered as: copy constructors
Appears in: Lesson 18, Lesson 24
Back to glossary top ↑
correctness
The degree to which software satisfies its specified requirements for all relevant inputs and states.
Also encountered as: correct program, correct code
Appears in: Lesson 01, Lesson 02, Lesson 04, Lesson 07, Lesson 10, Lesson 15, Lesson 16, Lesson 17, Lesson 20, Lesson 21, Lesson 23
Back to glossary top ↑
covariant return type
A C++ overriding rule that permits a virtual function to return a pointer or reference to a more-derived type than the base version returns.
Also encountered as: covariant return, covariant returns, covariant return types
Appears in: Lesson 21
Back to glossary top ↑
CPU
Central Processing Unit: the processor that executes machine instructions.
Also encountered as: processor, processors, central processing unit
Appears in: Lesson 08, Lesson 10, Lesson 17
Back to glossary top ↑
CPU register
A small, fast storage location inside a processor that can hold data while instructions are being executed.
Also encountered as: CPU registers, processor register, processor registers
Appears in: Lesson 02
Back to glossary top ↑
CRTP
Curiously Recurring Template Pattern: a C++ pattern where a derived class passes itself as a template argument to its base, often enabling static polymorphism.
Also encountered as: Curiously Recurring Template Pattern
Appears in: Lesson 19, Lesson 21
Back to glossary top ↑