CT 301 Exam 1: Supplementary
CT 301: C++ Fundamentals · Summer 2026
Exam 1: Supplementary
Additional material to study for Exam 1.
| Topic | learncpp.com |
|---|---|
| Lecture 1: Hello World, Objects, Types, Values | |
| Variable initialization (copy, direct, brace; narrowing) | 1.4 Variable assignment and initialization |
| Fundamental data types (int, double, char, bool) | 4.1 Introduction to fundamental data types |
Literals and literal suffixes (u, l, f, L) |
5.2 Literals |
Type deduction with auto |
10.8 Type deduction for objects using the auto keyword |
| Lecture 2: Functions, Scope, Constants, Pointers/References | |
const variables and named constants |
5.1 Constant variables (named constants) |
Constant expressions and constexpr variables |
5.5 Constant expressions and 5.6 Constexpr variables |
| Lvalue references (basics, binding, why they can't be reseated) | 12.3 Lvalue references |
| Lvalue references to const | 12.4 Lvalue references to const |
| Pointers (introduction, dereferencing, null) | 12.7 Introduction to pointers |
Pointers and const (const int* vs int* const) |
12.9 Pointers and const |
| Lecture 3: User-Defined Types and Modularity | |
Unscoped enumerations (plain enum) |
13.2 Unscoped enumerations |
Scoped enumerations (enum class) |
13.6 Scoped enumerations (enum classes) |
| Introduction to classes; public vs private members | 14.2 Introduction to classes and 14.5 Public and private members and access specifiers |
| Header files, header guards, and the One Definition Rule | 2.11 Header files and 2.12 Header guards |
| Lecture 5: Functions in depth | |
| Function declarations vs definitions; forward declarations | 2.7 Forward declarations and definitions |
| Pass by const lvalue reference | 12.6 Pass by const lvalue reference |
| Function overloading (overload resolution, what can differ) | 11.1 Introduction to function overloading and 11.2 Function overload differentiation |
| Returning values from functions (by value, by reference) | 12.12 Return by reference and return by address |
| Lecture 6: Classes and class design | |
| Constructors and member initializer lists | 14.9 Constructor member initializer lists |
| Introduction to inheritance | 24.1 Introduction to inheritance |
Virtual functions and dynamic dispatch (including override) |
25.2 Virtual functions and 25.3 The override and final specifiers |
| Virtual destructors (why and when) | 25.4 Virtual destructors, virtual assignment, and overriding virtualization |
| Pure virtual functions and abstract base classes | 25.7 Pure virtual functions, abstract base classes, and interface classes |
| Smart pointers and move semantics (HW#1 ownership) | |
| Introduction to smart pointers and move semantics | 22.1 Introduction to smart pointers and move semantics |
std::move |
22.4 std::move |
std::unique_ptr |
22.5 std::unique_ptr |