1. Problem It Solves
nullptr is a dedicated null-pointer value whose type prevents the integer-versus-pointer ambiguity created by 0 or NULL. It makes an important constraint visible instead of leaving readers to guess. This lesson keeps only the C++11 core that fits one focused day.
2. Prerequisites
The ideas from Day 3, plus basic variables, functions, and output already introduced.
3. Core Idea
Mental model: nullptr is a dedicated null-pointer value whose type prevents the integer-versus-pointer ambiguity created by 0 or NULL. Identify the relevant value or state, who owns it, and whether the rule acts during compilation or execution.
4. Minimal Syntax
int* p = nullptr; void inspect(std::nullptr_t);5. How It Works
The example creates a tiny fixed state with no keyboard input.
C++11 or the standard-library contract applies today's rule.
The program prints the important result so it can be checked against the source.
6. Common Mistakes
Dereferencing a null pointer is undefined behavior even though creating, copying, and comparing the null value is safe.
7. When to Use It
Use it when a pointer intentionally refers to no object or overloads must distinguish null from zero.
Avoid it when it hides ownership, lifetime, type, ordering, or cost.
8. Simple Example
Two overloads distinguish a real int* from the exact std::nullptr_t argument and print which case was selected. The .cpp keeps the data fixed and avoids unrelated abstraction.
Complete sample code
Source file
cpp11/04_nullptr_std_nullptr_t/main.cpp
#include <cstddef>
#include <iostream>
void inspect(int* pointer) {
std::cout << "pointer=" << *pointer << '\n';
}
void inspect(std::nullptr_t) {
std::cout << "null\n";
}
int main() {
int value = 42;
inspect(&value);
inspect(nullptr); // selects the exact nullptr overload
}
9. Key Takeaways
The feature is part of the C++11 scope used in this course.
Understand its lifetime, ownership, type, and ordering consequences.
Compile with warnings and prefer the smallest form that makes the rule obvious.
10. Self-Check Questions
Easy — Why use C++11
nullptrinstead of0orNULLfor a null pointer? What isstd::nullptr_t?Medium — Read the small example described above. What value or state should it print, and which rule produces that result?
Hard — Find and explain the subtle bug in this situation: Dereferencing a null pointer is undefined behavior even though creating, copying, and comparing the null value is safe. What is the smallest C++11-safe correction?