C++那些事
——
光城的实验室
C++那些事 | Stories About C Plus Plus — C++ Learning Site
简体中文
English
日本語
Español
Русский
Português
हिन्दी
Initializing search
Light-City/CPlusPlusThings
Home
Project Overview
Build & Run Guide
Fundamentals & Beyond
Source-Code Analysis
Idioms
Modern C++
Tools
Benchmarks
Hands-on Projects
Reading & Tips
Concurrency
Learning Resources
Contact the Author
C++那些事
Learn C++ the practical way — the fastest path from beginner to advanced.
Get Started
About the Author
C++那些事
Light-City/CPlusPlusThings
Home
Project Overview
Build & Run Guide
Fundamentals & Beyond
Fundamentals & Beyond
C++ const Constants & Qualifiers
C++ static Members & Lifetime
C++ vptr & vtable
C-Style Polymorphism in C++
C++ Pointers & References
C++ Macros & Conditional Compilation
The C++ this Pointer
C++ inline Functions
The C++ sizeof Operator
Pure Virtual Functions & Abstract Classes
C++ virtual Functions
The C++ volatile Keyword
C++ Assertions
C++ Bit Fields
C++ extern & Linkage
C++ struct
struct vs class
C++ union
The C++ explicit Keyword
C++ friend
C++ using Declarations & Aliases
C++ Namespaces
C++ enum
C++ decltype
Deeper Language Mechanics
Deeper Language Mechanics
The C++ mutable Keyword
The const Family in C++
C++ string ABI Compatibility
C++ ref & reference_wrapper
std::function Deep Dive
Smart Pointers as Parameters
Member Initializer List Pitfalls
Multiple Return Values
C++ vs Rust Destructors
Initialization vs Assignment
restrict & Compiler Optimization
Template Disambiguation
Tail Recursion in C++
vector resize vs reverse
The Dereference Operator *
Source-Code Analysis
Source-Code Analysis
STL Source-Code Analysis: array
STL Source-Code Analysis: deque
STL Source-Code Analysis: queue & stack
STL Source-Code Analysis: list
STL Source-Code Analysis: vector
STL Source-Code Analysis: typename
STL traits Techniques
STL Source-Code Analysis: iterators
STL EBO: Empty Base Optimization
STL Red-Black Tree
STL set & multiset
STL map & multimap
STL hashtable
Hand-Writing a Hash Table
STL Source-Code Analysis: unordered_map
std::string Deep Dive
std::string Interview Questions
STL Iterator Invalidation
Idioms
Idioms
The Class Initializer List Idiom
enum class: Scoped Enums
RAII Resource Management
The copy-and-swap Idiom
The Pimpl Idiom
The Mixin Idiom
Dependency Injection in C++
Trigraphs in C++
Avoiding Default Constructors
Lazy Evaluation Idiom
Header-Only vs Implementation Split
Class Templates over Function Templates
The Lookup-Table Idiom
Member Pointers & Type Info
The Singleton Pattern
Modern C++
Modern C++
C++11
C++11
C++11 Features Overview
std::move: How It Works
Variadic Templates
std::bind vs lambda
C++17
C++17
17 Advanced C++17 Features
C++17 std::string_view
C++17 Structured Bindings
C++17 Variable Templates
C++17 [[nodiscard]]
C++17 PMR Memory Resources
C++17 CTAD
C++17 std::variant
C++17 optional_ref
C++17 auto Template Deduction
C++20
C++20
A Guide to C++20 Features
Introduction to C++20 Coroutines
The C++20 Ranges Library
C++20 Modules
C++20 Lambdas (Part 1)
C++20 Channels in Practice
std::span: Design & Pitfalls
C++20 std::endian
C++20 constexpr & the Comma Operator
C++20 [[no_unique_address]]
The <=> Operator
C++20 Concepts
C++20 [[likely]] & [[unlikely]]
Tools
Tools
CMake Essentials
Building C++ with Bazel
Building C++ with Meson
Getting Started with Conan
Debugging C++ with GDB
Debugging C++ with LLDB
The dbg-macro Debugging Tool
Bazel + LLDB Debugging
GDB Python Extensions
Hunting Memory Leaks in Practice
STL Debug Mode
Quick STL Container Output
C++ in Jupyter Notebooks
C++ Insights: Compile-Time View
Converting string to int
GCC Options Explained
Formatting C++ in VS Code
AddressSanitizer
Detecting Memory Leaks
Valgrind Massif Analysis
Benchmarks
Benchmarks
memcpy vs std::copy
std::string SSO Benchmarks
Polymorphism: virtual vs CRTP vs variant
Hands-on Projects
Hands-on Projects
10-Day C++ Crash Course
Key C++ Exercises
A C++20 Coroutine HTTP Server
A URL-Shortener Demo
A Small gRPC Project
Accelerating Python with pybind11
Google Benchmark
Implementing FnOnce by Hand
IPC in Practice
C++17 + SQLite: Directory Sizes
Protobuf Zero-Copy Serialization
Designing a Stack Calculator
Reading & Tips
Reading & Tips
Six Ways to Split a String
How to Read Open-Source C++
Printing 1-100 Without Loops
A Fun C++ Snippet
CPython Extension Notes
libcurl with C++: Notes
Concurrency
Concurrency
Reading C++ Concurrency in Action
Getting Started with Threads
std::thread & jthread
std::thread Internals
Debugging Deadlocks
GDB Multi-Thread All-Stop
Helgrind Concurrency Checks
False Sharing & Cache Lines
C++17 Parallel STL
C++ SIMD Vectorization
How the libev Event Loop Works
Learning Resources
Learning Resources
Modern C++ in 30 Lectures (GeekTime)
C++ Knowledge Base
C++ Video Tutorials on Bilibili
C++ Resources & Book List
Contact the Author
Home
Last updated:2026-10-12
Comments
Back to top