C++ Programming
Programming glossary
All lessons

Course reference · 276 explained terms

Programming glossary

Clear explanations of the C++ and programming terminology used throughout all 24 lessons.

A

ABI

Application Binary Interface: the low-level rules that compiled components follow so they can work together, including calling conventions, data layout and symbol naming.

Also encountered as: application binary interface

Appears in: Lesson 01

Back to glossary top ↑

abstract base class

A base class that cannot be instantiated directly, usually because it contains at least one pure virtual function. It defines a common contract for derived classes.

Also encountered as: abstract base, abstract bases

Appears in: Lesson 21

Back to glossary top ↑

access control

The rules controlling which code may use a class member. In C++, the main access levels are public, protected and private.

Also encountered as: access levels, access specifier, access specifiers

Appears in: Lesson 18, Lesson 24

Back to glossary top ↑

address-of operator

The unary & operator when it is used to obtain the memory address of an object.

Also encountered as: address operator

Appears in: Lesson 14

Back to glossary top ↑

assembler

A tool that translates assembly-language instructions into machine code.

Also encountered as: assembler programming

Appears in: Lesson 01

Back to glossary top ↑

assembly language

A low-level, human-readable representation of processor instructions, closely related to the machine code executed by a CPU.

Also encountered as: assembly, assembler language

Additional course reference term.

Back to glossary top ↑

automatic storage duration

The lifetime category normally used by local variables: the object is created when execution reaches its declaration and destroyed when its block is left.

Also encountered as: automatic storage

Appears in: Lesson 14, Lesson 15, Lesson 24

Back to glossary top ↑

average-case complexity

An estimate of an algorithm's resource use for a typical input under stated assumptions.

Also encountered as: average case, average-case

Additional course reference term.

Back to glossary top ↑

B

Big O notation

A notation describing how an algorithm's resource requirements grow as its input grows, while ignoring constant factors and lower-order terms.

Also encountered as: Big-O, Big O, asymptotic complexity

Appears in: Lesson 01

Back to glossary top ↑

black box

A component considered only through its inputs and outputs, without relying on knowledge of its internal implementation.

Also encountered as: black-box, black box testing, black-box testing

Appears in: Lesson 01

Back to glossary top ↑

branchless programming

Writing a calculation so it avoids conditional control-flow branches, sometimes to improve predictable processor performance.

Also encountered as: branchless, branchless variant, branchless variants

Appears in: Lesson 01

Back to glossary top ↑

buffer overflow

Writing beyond the allocated boundary of a buffer. This is undefined behaviour and can cause crashes, corruption or security vulnerabilities.

Also encountered as: buffer overrun, buffer overruns, buffer overflows

Additional course reference term.

Back to glossary top ↑

C

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 ↑

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 ↑

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 ↑

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 ↑

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 ↑

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 ↑

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 ↑

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 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 ↑

D

data structure

A particular way of organising data so operations on it can be performed effectively.

Also encountered as: data structures

Appears in: Lesson 01

Back to glossary top ↑

debug build

A program build configured to aid debugging, normally retaining symbols and checks while applying little or no optimisation.

Also encountered as: debug builds, debug mode

Appears in: Lesson 01, Lesson 15

Back to glossary top ↑

diamond problem

An ambiguity that can occur in multiple inheritance when two base-class paths lead to the same ancestor.

Also encountered as: inheritance diamond

Appears in: Lesson 19

Back to glossary top ↑

disassembly

A representation of compiled machine code as assembly-language instructions, often used to inspect what the compiler produced.

Also encountered as: disassemble, disassembled

Appears in: Lesson 09

Back to glossary top ↑

do-while loop

A loop that executes its body before checking its condition, so the body always runs at least once.

Also encountered as: do-while, do while, do–while, do–while loop, do-while loops

Appears in: Lesson 11, Lesson 12

Back to glossary top ↑

dynamic allocation

Requesting storage while the program is running, normally from the heap. In C++, raw dynamic allocation uses new and delete, though RAII types are preferred.

Also encountered as: dynamically allocated, dynamic memory allocation

Appears in: Lesson 01, Lesson 03, Lesson 17

Back to glossary top ↑

dynamic type

The actual most-derived type of a polymorphic object during execution, which may differ from the static type of the pointer or reference used to access it.

Also encountered as: runtime type

Appears in: Lesson 19, Lesson 21

Back to glossary top ↑

dynamic_cast

A C++ cast that safely checks certain conversions within a polymorphic class hierarchy at runtime.

Also encountered as: dynamic cast, downcast, downcasts, downcasting

Appears in: Lesson 21

Back to glossary top ↑

E

end-of-file

A condition indicating that no more data can be read from a file or input stream, commonly abbreviated EOF.

Also encountered as: EOF, end of file

Appears in: Lesson 11

Back to glossary top ↑

entry point

The defined place where program execution begins. In a normal hosted C++ program, the entry function is main.

Also encountered as: program entry point, entry function

Appears in: Lesson 05, Lesson 09

Back to glossary top ↑

evaluation order

The language rules determining when the parts of an expression are evaluated relative to one another.

Also encountered as: order of evaluation

Appears in: Lesson 06, Lesson 12

Back to glossary top ↑

exception safety

The guarantees a component provides about resource management and program state when an operation exits by throwing an exception.

Also encountered as: exception-safe

Additional course reference term.

Back to glossary top ↑

exit code

An integer returned to the operating environment when a program finishes. Zero conventionally indicates success.

Also encountered as: exit status, return code, exit codes

Appears in: Lesson 05

Back to glossary top ↑

explicit conversion

A type conversion deliberately requested in source code, such as with a named cast or an explicit constructor.

Also encountered as: explicit conversions, explicit cast

Appears in: Lesson 13, Lesson 22

Back to glossary top ↑

external linkage

A C++ linkage property allowing the same named entity to be referred to from different translation units.

Appears in: Lesson 08

Back to glossary top ↑

F

flame graph

A visual profile showing where a program spends execution time, with wider blocks representing more sampled work.

Also encountered as: flamegraph, flamegraphs, flame graphs

Appears in: Lesson 01

Back to glossary top ↑

floating-point type

A numeric type that represents a finite range of real-number approximations, including fractional values. C++ floating-point types include float, double and long double.

Also encountered as: floating point type, floating-point types, floating point types, floating-point number, floating-point numbers

Additional course reference term.

Back to glossary top ↑

for loop

A loop that normally groups initialisation, continuation condition and update into one control statement.

Also encountered as: for-loop, for loops, for-loops

Appears in: Lesson 10, Lesson 12

Back to glossary top ↑

forward declaration

A declaration that introduces a name before its complete definition appears, allowing earlier code to refer to it in limited ways.

Also encountered as: forward declarations, function prototype, function prototypes

Appears in: Lesson 06, Lesson 07

Back to glossary top ↑

friend function

A non-member function granted access to a class's private and protected members by a friend declaration inside that class.

Also encountered as: friend functions

Appears in: Lesson 20

Back to glossary top ↑

function overloading

Defining several functions with the same name but different parameter lists, allowing overload resolution to choose among them.

Also encountered as: overloaded function, overloaded functions, function overload, function overloads

Appears in: Lesson 06, Lesson 23

Back to glossary top ↑

function template

A recipe that generates functions from template arguments, allowing one algorithm to work with multiple suitable types.

Also encountered as: function templates

Appears in: Lesson 20, Lesson 23

Back to glossary top ↑

fuzz testing

Automated testing that supplies many unexpected, random, extreme or malformed inputs to uncover crashes, hangs, memory errors and violated rules.

Also encountered as: fuzz, fuzzing, fuzz test, fuzz tests

Appears in: Lesson 01

Back to glossary top ↑

fuzzer

A tool that repeatedly generates or mutates inputs and feeds them to a program to search for faults.

Also encountered as: fuzzers

Appears in: Lesson 01

Back to glossary top ↑

fuzzing oracle

The rule used during fuzz testing to decide whether an input exposed a failure, such as a crash, sanitizer report or broken invariant.

Also encountered as: fuzzing oracles

Appears in: Lesson 01

Back to glossary top ↑

G

generic programming

Writing algorithms and data structures in terms of required capabilities rather than one specific type. C++ templates are a principal mechanism for this.

Also encountered as: generic code

Appears in: Lesson 23

Back to glossary top ↑

global variable

A variable declared at namespace scope, rather than inside a function or class. Its broad visibility and lifetime require careful control.

Also encountered as: global variables, global state, global name, global names

Appears in: Lesson 01, Lesson 08, Lesson 18

Back to glossary top ↑

guard clause

An early check that immediately exits or handles an invalid case, keeping the main path of a function less deeply nested.

Also encountered as: guard clauses, early return, early returns

Appears in: Lesson 12, Lesson 15, Lesson 24

Back to glossary top ↑

H

Heisenbug

A fault whose behaviour changes or disappears when someone tries to observe or debug it, often because timing or memory layout changes.

Also encountered as: Heisenbugs

Appears in: Lesson 01

Back to glossary top ↑

I

include guard

Preprocessor directives that ensure a header's contents are processed no more than once in a translation unit.

Also encountered as: include guards

Appears in: Lesson 07

Back to glossary top ↑

infinite loop

A loop whose termination condition is never reached, so it continues indefinitely unless interrupted.

Also encountered as: infinite loops, runaway loop, runaway loops

Appears in: Lesson 10, Lesson 11

Back to glossary top ↑

inline

A C++ specifier that permits equivalent definitions in multiple translation units. It also historically suggested replacing a call with the function body, though that optimisation decision belongs to the compiler.

Also encountered as: inline function, inline functions, inline variable, inline variables

Appears in: Lesson 04, Lesson 07, Lesson 08, Lesson 20, Lesson 23

Back to glossary top ↑

instance

A particular object created from a class or other type description.

Also encountered as: instances, instantiate an object

Additional course reference term.

Back to glossary top ↑

instantiation

Creating a concrete entity from a general description. For templates, it means generating a class or function for particular template arguments.

Also encountered as: instantiate, instantiated, instantiating, template instantiation, template instantiations

Appears in: Lesson 03, Lesson 07, Lesson 21, Lesson 23

Back to glossary top ↑

integration test

A test that checks whether multiple components work correctly together.

Also encountered as: integration tests, integration testing

Additional course reference term.

Back to glossary top ↑

internal linkage

A C++ linkage property that keeps a name local to one translation unit. An unnamed namespace is the usual modern mechanism.

Appears in: Lesson 08

Back to glossary top ↑

iterator invalidation

A change to a container that makes one or more existing iterators, pointers or references unsafe to use.

Also encountered as: invalidated iterator, invalidated iterators, invalidation

Appears in: Lesson 16, Lesson 17, Lesson 18

Back to glossary top ↑

L

lifetime extension

A C++ rule that allows certain temporary objects to live longer when bound to an appropriate reference.

Also encountered as: extended lifetime

Appears in: Lesson 16

Back to glossary top ↑

linker error

A failure while combining compiled components, often caused by a missing definition, duplicate definition or incompatible binary interface.

Also encountered as: link errors, link error, linker errors

Appears in: Lesson 07, Lesson 08

Back to glossary top ↑

lookup table

A data structure containing preselected results or actions that code retrieves by key or index instead of recomputing or branching through many cases.

Also encountered as: lookup tables, dispatch table, dispatch tables

Appears in: Lesson 12, Lesson 19, Lesson 21

Back to glossary top ↑

lvalue

A C++ expression category that identifies an object with a persistent identity and location, allowing operations such as taking its address.

Also encountered as: lvalues, lvalue expression, lvalue expressions

Appears in: Lesson 13

Back to glossary top ↑

M

metamorphic testing

Testing relationships between multiple executions when the exact answer may be difficult to know, such as expecting a predictable transformation of the output after transforming the input.

Also encountered as: metamorphic test, metamorphic tests

Appears in: Lesson 01

Back to glossary top ↑

microbenchmark

A narrowly focused benchmark measuring one small operation or component under controlled conditions.

Also encountered as: microbenchmarks, micro-benchmark, micro-benchmarks

Appears in: Lesson 01

Back to glossary top ↑

move assignment

Replacing an existing object's state by transferring resources from an expiring object of the same type.

Also encountered as: move assignment operator

Appears in: Lesson 16, Lesson 24

Back to glossary top ↑

move constructor

A constructor that creates an object by transferring resources from an expiring object of the same type.

Also encountered as: move constructors

Appears in: Lesson 24

Back to glossary top ↑

move semantics

C++ rules that allow resources to be transferred from an object that will no longer need them, avoiding an unnecessary deep copy.

Also encountered as: resource move, resource moves

Appears in: Lesson 15

Back to glossary top ↑

multiple definition error

A linker failure caused when a program supplies more definitions of an entity than the One Definition Rule permits.

Also encountered as: multiple definition errors, duplicate definition, duplicate definitions

Appears in: Lesson 07, Lesson 08

Back to glossary top ↑

N

name hiding

A C++ lookup effect where a declaration in an inner scope or derived class prevents declarations with the same name in an outer scope or base class from being found normally.

Also encountered as: hidden name, hidden names

Appears in: Lesson 19

Back to glossary top ↑

namespace alias

A shorter or interchangeable name assigned to an existing namespace.

Also encountered as: namespace aliases

Appears in: Lesson 08

Back to glossary top ↑

non-deterministic algorithm

A theoretical or practical computation whose next choice is not uniquely fixed by its current state; randomness is one practical source of non-determinism.

Also encountered as: non-deterministic, nondeterministic, non-deterministically

Appears in: Lesson 01, Lesson 11

Back to glossary top ↑

non-type template parameter

A template parameter representing a compile-time value rather than a type, commonly abbreviated NTTP.

Also encountered as: non-type template parameters, NTTP, NTTPs

Appears in: Lesson 23

Back to glossary top ↑

NVI pattern

Non-Virtual Interface pattern: public non-virtual functions enforce a stable workflow and call protected or private virtual functions for custom behaviour.

Also encountered as: Non-Virtual Interface, NVI

Appears in: Lesson 19, Lesson 21

Back to glossary top ↑

O

object file

Compiler output containing machine code and symbol information that a linker combines with other object files and libraries.

Also encountered as: object files, object code

Appears in: Lesson 07, Lesson 08

Back to glossary top ↑

object slicing

Loss of a derived object's additional state and behaviour when it is copied into a base-class object by value.

Also encountered as: slicing, sliced object, sliced objects

Appears in: Lesson 19, Lesson 21, Lesson 22

Back to glossary top ↑

object-oriented programming

A programming style that organises behaviour and state around objects, commonly using encapsulation, composition, inheritance and polymorphism.

Also encountered as: object oriented, object-oriented, OOP, object orientation

Appears in: Lesson 18, Lesson 19, Lesson 20

Back to glossary top ↑

observable behaviour

The externally detectable effects of a program that a conforming implementation must preserve, such as required input/output effects.

Also encountered as: observable behavior

Appears in: Lesson 01, Lesson 05

Back to glossary top ↑

One Definition Rule

The C++ rule controlling how many definitions an entity may have across a program and when repeated definitions must be equivalent. It is often abbreviated ODR.

Also encountered as: ODR, one-definition rule

Appears in: Lesson 07, Lesson 08, Lesson 23

Back to glossary top ↑

operator overloading

Defining how an existing C++ operator behaves for a user-defined type while preserving the operator's expected meaning.

Also encountered as: overloaded operator, overloaded operators, operator overload, operator overloads

Appears in: Lesson 09, Lesson 22

Back to glossary top ↑

oracle

A rule or mechanism that decides whether the observed result of a test is correct.

Also encountered as: test oracle, test oracles, oracles

Appears in: Lesson 01

Back to glossary top ↑

out-of-bounds access

Reading or writing outside the valid index range of an array, buffer or container. With unchecked C++ access this is usually undefined behaviour.

Also encountered as: out of bounds, out-of-bounds, bounds error, bounds errors

Appears in: Lesson 05, Lesson 14, Lesson 17

Back to glossary top ↑

override

A derived-class virtual function that replaces the implementation inherited from a base class. The C++ override specifier asks the compiler to verify this intent.

Also encountered as: overrides, overriding, overridden

Appears in: Lesson 18, Lesson 19, Lesson 21

Back to glossary top ↑

P

P versus NP

The unresolved question of whether every problem whose proposed solution can be checked in polynomial time can also be solved in polynomial time.

Also encountered as: P = NP, P vs NP, P versus NP, P and NP

Appears in: Lesson 01

Back to glossary top ↑

pass by pointer

Passing an object's address as a function argument, allowing the function to access the original object and also represent no object with a null pointer.

Also encountered as: passing by pointer, pointer parameter, pointer parameters

Appears in: Lesson 17

Back to glossary top ↑

pass by reference

Binding a function parameter directly to the caller's object instead of making a copy. A const reference permits read-only access.

Also encountered as: passing by reference, reference parameter, reference parameters

Appears in: Lesson 14

Back to glossary top ↑

pass by value

Giving a function its own parameter object initialised from the argument. Changes to that parameter do not directly change the caller's object.

Also encountered as: passing by value, value parameter, value parameters

Appears in: Lesson 04, Lesson 06, Lesson 07

Back to glossary top ↑

perfect forwarding

A template technique that passes an argument onward while preserving whether it was an lvalue or rvalue and retaining its const qualification.

Also encountered as: forwarding reference, forwarding references

Appears in: Lesson 23

Back to glossary top ↑

pointer arithmetic

Adding, subtracting or comparing pointers within the bounds of the same array so they refer to different elements.

Appears in: Lesson 14

Back to glossary top ↑

polynomial time

A running-time bound expressible as a polynomial in the input size, such as n, n squared or n cubed.

Also encountered as: polynomial-time

Appears in: Lesson 01

Back to glossary top ↑

postfix increment

The expression value++: it yields the old value and then increments the object.

Also encountered as: post-increment, postfix operator

Appears in: Lesson 22

Back to glossary top ↑

precompiled header

A compiler-generated representation of commonly included headers that can reduce repeated compilation work, often abbreviated PCH.

Also encountered as: precompiled headers, PCH

Appears in: Lesson 07

Back to glossary top ↑

prefix increment

The expression ++value: it increments the object and yields the new value.

Also encountered as: pre-increment, prefix operator

Additional course reference term.

Back to glossary top ↑

preprocessor

The stage that handles directives such as #include, #define and conditional compilation before the C++ compiler processes the resulting translation unit.

Also encountered as: preprocessing, preprocessor directive, preprocessor directives

Appears in: Lesson 07, Lesson 09

Back to glossary top ↑

procedural programming

A programming style that organises a solution primarily as procedures or functions operating on data.

Also encountered as: procedural code, procedural

Appears in: Lesson 18, Lesson 19

Back to glossary top ↑

programming statement

A complete instruction in source code, such as a declaration, expression statement, branch, loop or return.

Also encountered as: programming statements, program statements

Additional course reference term.

Back to glossary top ↑

property-based testing

Testing that generates many inputs and checks general properties that should always hold instead of relying only on a few hand-written examples.

Also encountered as: property-based test, property-based tests, property test, property tests

Additional course reference term.

Back to glossary top ↑

pure virtual function

A virtual function declared with = 0 that makes its class abstract and requires an appropriate derived class to provide the concrete operation.

Also encountered as: pure virtual, pure virtual functions

Appears in: Lesson 18, Lesson 21

Back to glossary top ↑

R

recursion

A technique in which a function calls itself directly or indirectly, normally with a base case that ends the repetition.

Also encountered as: recursive, recursive call, recursive calls

Appears in: Lesson 06

Back to glossary top ↑

ref-qualifier

A trailing & or && on a member function that restricts whether it may be called on lvalue or rvalue objects.

Also encountered as: ref-qualifiers, reference qualifier, reference qualifiers

Appears in: Lesson 19, Lesson 21

Back to glossary top ↑

release build

A build configured for delivery and performance, usually with optimisation enabled and less debugging information than a debug build.

Also encountered as: release builds, release mode

Appears in: Lesson 01

Back to glossary top ↑

Rule of Three, Five and Zero

C++ guidance for resource-managing classes: related copy, move and destruction operations must be considered together, while well-designed RAII members often let a class declare none of them itself.

Also encountered as: Rule of 3, Rule of 5, Rule of 0, Rule of 3 / 5 / 0, rule of three, rule of five, rule of zero

Appears in: Lesson 15, Lesson 18, Lesson 23, Lesson 24

Back to glossary top ↑

runtime type information

C++ information that allows certain type checks and casts within polymorphic class hierarchies while the program runs, commonly abbreviated RTTI.

Also encountered as: RTTI, type query, type queries

Appears in: Lesson 21

Back to glossary top ↑

rvalue

A C++ expression category commonly associated with temporary values or objects whose resources may be moved from.

Also encountered as: rvalues, rvalue expression, rvalue expressions

Appears in: Lesson 06, Lesson 17, Lesson 24

Back to glossary top ↑

S

sanitizer

A compiler-assisted runtime checker that detects classes of faults such as invalid memory access, undefined behaviour or data races.

Also encountered as: sanitizers, AddressSanitizer, UndefinedBehaviorSanitizer

Appears in: Lesson 01, Lesson 14, Lesson 15, Lesson 24

Back to glossary top ↑

segmentation fault

A runtime failure raised by the operating system when a program attempts an invalid memory access.

Also encountered as: segfault, segmentation faults

Additional course reference term.

Back to glossary top ↑

SFINAE

Substitution Failure Is Not An Error: an older C++ template technique in which unsuitable candidates are removed during substitution rather than causing immediate compilation failure.

Also encountered as: Substitution Failure Is Not An Error

Appears in: Lesson 23

Back to glossary top ↑

short-circuit evaluation

Evaluation of && or || that stops as soon as the final Boolean result is known, so the right operand may not execute.

Also encountered as: short-circuit, short circuit, short-circuiting

Appears in: Lesson 11, Lesson 12, Lesson 22

Back to glossary top ↑

SIMD

Single Instruction, Multiple Data: processor facilities that apply one operation to several data values at once.

Also encountered as: SIMD-friendly, vector instruction, vector instructions

Appears in: Lesson 01

Back to glossary top ↑

software build

The process, or resulting output, of turning source files and resources into a runnable program.

Also encountered as: builds, build process, program build, program builds

Appears in: Lesson 01, Lesson 07, Lesson 09

Back to glossary top ↑

source file

A file containing program source text. A C++ implementation file commonly uses the .cpp extension.

Also encountered as: source files, implementation file, implementation files

Appears in: Lesson 07, Lesson 08

Back to glossary top ↑

specialisation

A custom template definition used for particular template arguments instead of the primary template.

Also encountered as: specialization, specialisations, specializations, specialise, specialize

Appears in: Lesson 20, Lesson 21, Lesson 23

Back to glossary top ↑

standard library

The portable set of types, functions and facilities supplied by the C++ standard, including containers, algorithms, strings and input/output streams.

Also encountered as: C++ standard library, std library

Appears in: Lesson 07, Lesson 09

Back to glossary top ↑

state trace

A step-by-step record of selected variable values as a program executes, used to explain or debug changes in program state.

Also encountered as: state traces, variable trace, variable traces, trace table, trace tables

Additional course reference term.

Back to glossary top ↑

static local variable

A variable declared inside a function with local scope but static storage duration, so its value persists between calls.

Also encountered as: static local, static locals

Appears in: Lesson 16

Back to glossary top ↑

static polymorphism

Compile-time selection of behaviour for different types, commonly implemented with templates rather than virtual dispatch.

Also encountered as: compile-time polymorphism

Appears in: Lesson 18, Lesson 19, Lesson 21

Back to glossary top ↑

static storage duration

A lifetime category for objects that exist for the duration of the program.

Also encountered as: static storage

Appears in: Lesson 16

Back to glossary top ↑

storage duration

The C++ category that determines how long an object's storage lasts, including automatic, static, thread and dynamic storage durations.

Also encountered as: storage lifetime

Appears in: Lesson 03, Lesson 14, Lesson 16

Back to glossary top ↑

stream insertion and extraction

The conventional use of operator<< to write values to a stream and operator>> to read values from a stream.

Also encountered as: stream insertion, stream extraction, stream operator, stream operators

Appears in: Lesson 05, Lesson 09, Lesson 22

Back to glossary top ↑

symbol

A named entity represented in compiled output so the linker or debugger can identify functions, objects and other program elements.

Also encountered as: symbols, symbol name, symbol names

Appears in: Lesson 07, Lesson 08, Lesson 22

Back to glossary top ↑

T

template argument

A concrete type, value or template supplied for a template parameter when a template is used or instantiated.

Also encountered as: template arguments

Appears in: Lesson 23

Back to glossary top ↑

template argument deduction

The compile-time process by which C++ infers template arguments from a function call or other context.

Also encountered as: template deduction, type deduction, deduction

Appears in: Lesson 02, Lesson 23

Back to glossary top ↑

template parameter

A placeholder declared by a template and replaced by a template argument when the template is used.

Also encountered as: template parameters

Appears in: Lesson 23

Back to glossary top ↑

three-way comparison

The C++20 <=> operator, sometimes called the spaceship operator, which expresses whether one value is less than, equal to or greater than another.

Also encountered as: spaceship operator, three way comparison

Appears in: Lesson 22

Back to glossary top ↑

time complexity

How an algorithm's number of computational steps grows with input size.

Also encountered as: running-time complexity, runtime complexity

Additional course reference term.

Back to glossary top ↑

type safety

The extent to which a language and program prevent values from being used through incompatible types.

Also encountered as: type-safe, type safe

Appears in: Lesson 09

Back to glossary top ↑

U

unnamed namespace

A namespace without a name that gives its declarations internal linkage within the current translation unit. It is also called an anonymous namespace.

Also encountered as: anonymous namespace, anonymous namespaces, unnamed namespaces

Appears in: Lesson 08

Back to glossary top ↑

using declaration

A C++ declaration that brings one specific name into the current scope, such as using std::cout.

Also encountered as: using declarations

Appears in: Lesson 08

Back to glossary top ↑

V

virtual destructor

A destructor declared virtual in a base class so deleting a derived object through a base pointer invokes the complete derived destruction sequence.

Also encountered as: virtual destructors

Appears in: Lesson 19, Lesson 21, Lesson 24

Back to glossary top ↑

virtual function

A member function whose overriding implementation is selected at runtime according to the dynamic type of the object.

Also encountered as: virtual functions, virtual method, virtual methods

Appears in: Lesson 19, Lesson 21

Back to glossary top ↑

virtual memory

The operating system's abstraction that gives a process its own address space and maps virtual addresses to physical memory or backing storage.

Also encountered as: virtual address, virtual addresses, physical memory

Appears in: Lesson 10, Lesson 14

Back to glossary top ↑

vtable

A common compiler implementation structure containing virtual-function targets for a polymorphic class. The C++ language specifies behaviour, not this exact representation.

Also encountered as: virtual table, virtual function table, vtables

Appears in: Lesson 18, Lesson 19, Lesson 21

Back to glossary top ↑

W

watch window

A debugger view that displays selected expressions or variables and updates their values as execution is inspected.

Also encountered as: watch windows, watch list, watch lists

Appears in: Lesson 01, Lesson 02, Lesson 11

Back to glossary top ↑

while loop

A loop that checks its condition before each iteration and repeats while that condition remains true.

Also encountered as: while loops, while-loop, while-loops

Additional course reference term.

Back to glossary top ↑

wild pointer

An uninitialised pointer containing an indeterminate address rather than a known valid address or null value.

Also encountered as: wild pointers, uninitialised pointer, uninitialized pointer

Appears in: Lesson 14

Back to glossary top ↑

worst-case complexity

An upper bound on an algorithm's resource use for the most demanding valid input of a given size.

Also encountered as: worst case, worst-case

Additional course reference term.

Back to glossary top ↑