- Default:
ClassName() - Parameterized:
ClassName(int a, double b) - Copy:
ClassName(const ClassName& other) - Move:
ClassName(ClassName&& other) noexcept - Delegating:
ClassName(int a) : ClassName(a, 0.0) {}
MEMBER INITIALIZER LIST vs BODY ASSIGNMENT:
Initializer List: [Allocate + Initialize with Value] (1 operation)
Body Assignment: [Allocate + Default Init] -> [Overwrite with Assignment] (2 operations + redundant copy)