Please rotate your tablet to be horizontal.

You can dismiss this notice but please note that this experience has not been designed for mobile devices and so will be less than optimal

Back To Schedule

What Classes we Design and How

14:00 - 15:30 Friday 8th April 2022 BST
Add to Google Calendar

C++ class design has been error prone since the beginning until Scott Meyers told us about the Rule-of-Three. But even that safety rule is not enforced by the language. In addition, C++11 changed the set of compiler-provided special member functions and the intrinsic rules have become more complicated. However, instead of starting from the rules for special member functions, we will look at what role a C++ object plays and how that maps on what special member functions to define for its class and how, if any. Examples for object roles are Value, Relation, Manager (scoped, unique, general) and Subject(identity). Note, an individual object or its type can actually play several of those roles.

We will rehearse the Rule of Zero, and learn more about the Rule of Five/Six, the Rule of DesDeMovA, and the new Rule of (Unique) Three.

This all will enable you to much more consciously and safely design your class types and combine types of member variables.

As an extra we will look at relation objects that allow "Fernwirkung" in expressions and where to use relation types safely and where developer scrutiny is required to prevent undefined behavior.