IF a Class Needs a Custom Copy Constructor, Copy Assignment Operator, Or Destructor, IT Probably Needs All three.
Avoid hard-wiring information that needlessly makes code more brittle and limits flexibility.Always make all data members private. The only exception is the case of a C-style struct which is not intended to encapsulate anything and where all members are public. Write (only) useful comments Never write comments that repeat the code;. instead, write comments that explain the code and the reasons why you wrote it that way.Practice const-correctnessAvoid type switching; prefer type safetyNever use "underhanded names" -ones that begin with an underscore or that contain a double underscore. They are reserved for your compiler and standard library implementation.If you want to represent variant types, for now prefer to use boost :: any (or something equally simple).