Advanced Topic Cpp Classes and Objects Definning a class Data members Function members Constructors and destructors Explicit constructors Namespaces self-referencing pointer Operator overloads Non-member operators Conversion operators Increment and decrement operators Allocating object memory Functors Example: numword Class inheritance Accessing the base class Friendship Multiple inheritance Polymorphism Smart Pointers Unique pointer Shared pointer Weak pointer Move Semantics lvalues and rvalues Using std::move The move constructor The move assignment operator The copy-and-swap idiom Rule of five Lambda Functions Lambda syntax Captures Polymorphic lambdas The C Preprocessor Macros as constants Including files Conditional compilation Defining macros Including files only once