google cppguide - yszheda/wiki GitHub Wiki
https://google.github.io/styleguide/cppguide.html
Classes
Doing Work in Constructors
Avoid virtual method calls in constructors, and avoid initialization that can fail if you can't signal an error.
Copyable and Movable Types
Structs vs. Classes
Inheritance
Composition is often more appropriate than inheritance. When using inheritance, make it public
.
Multiple Inheritance
Multiple inheritance is allowed only when all superclasses, with the possible exception of the first one, are pure interfaces. In order to ensure that they remain pure interfaces, they must end with the Interface suffix.
Interfaces
A class is a pure interface if it meets the following requirements:
- It has only public pure virtual ("= 0") methods and static methods (but see below for destructor).
- It may not have non-static data members.
- It need not have any constructors defined. If a constructor is provided, it must take no arguments and it must be protected.
- If it is a subclass, it may only be derived from classes that satisfy these conditions and are tagged with the Interface suffix.