C++
C++ is a statically typed language with rich support for object-oriented programming, generic programming, and metaprogramming. There's also some support for functional programming with C++11. As a professional C++ programmer, I am eager to extend my knowledge of the language and occasionally use it as illustration for my posts.
The wiki cppreference.com is a good online reference, and The C++ Programming Language 4th Edition by Stroustrup is a decent introductions into the breadth and depth of the language if one is already familiar with the basics.
See also my articles tagged with C.
Posts
Dynamic vs. Static Dispatch
This article explains the difference between dynamic dispatch (late binding) and static dispatch (early binding). We'll also touch on the differences in language support for virtual and static methods, and how virtual methods can be circumvented.
Extract Your Dependencies
Making your code ready to be tested
Global dependencies make it difficult to properly test a piece of code. By extracting all dependencies into a single manageable object, we can easily mock the necessary services and avoid a large-scale refactor.
Interface Dispatch
Virtual method calls are simple: you just look up the method slot in a vtable and call the function pointer. Easy! Well, not quite: interfaces present a kind of multiple inheritance, and things quickly become complicated.
This post discusses interface method calls in C++ (GCC), Java (OpenJDK/HotSpot), C# (CLR), Go, and Rust.
It is an expanded version of my answer on Software Engineering Stack Exchange on Implementation of pure abstract classes and interfaces.
Dump notes