Note that the only difference between the struct and class keywords is that by default, the member variables, member functions, and base classes of a struct are public, while in a class they are private. C++ programmers tend to call it a class if it has constructors and destructors, and the ability to enforce its own invariants; or a struct if it’s just a simple collection of values, but the C++ language itself makes no distinction.

Class basics

Final classes and structs

Access specifiers

Inheritance

Friendship

Virtual Inheritance

Member types and aliases

Accessing class members

Private inheritance restricting base class interface

Nested classes / structures

Multiple Inheritance

Static class members

Non-static member functions

Unnamed struct / class