Mixins

Understand the role of mixins, and add functionalities to classes without becoming a base class for them.

Mixins are small classes that are designed to add functionality to other classes. If we read about mixins, we’ll often find that the CRTP is used to implement mixins in C++. This is an incorrect statement. The CRTP helps achieve a similar goal to mixins, but they are different techniques. The point of mixins is that they’re supposed to add functionality to classes without being a base class to them, which is the key to the CRTP pattern. Instead, mixins are supposed to inherit from the classes they add functionality to, which is the CRTP upside down.

The CRTP vs. mixins

Remember the earlier example with knights and mages that could move forth and back with the step_forth and step_back member functions? The knight and mage classes were derived from the movable_unit class template that added the functions advance and retreat, which enabled units to move several steps forth or back. The same example can be implemented using mixins in a reverse order. Here’s how:

Get hands-on with 1200+ tech skills courses.