Cpp Coding Standards/VIRTUAL

From Apache OpenOffice Wiki
Jump to: navigation, search

Virtual Classes (VIRTUAL)

Virtual classes are classes with (at least one) virtual functions.

Liskov Substitution Principle (LSP)

Always follow the Liskov Substitution Principle: Everything a client can do with a base class, it must be able to do with each derived class as well. -> Details

Instantiate Only Leaves (Inst)

In an inheritance tree of virtual classes, instantiate only the leaves. Make all other classes either abstract or their constructors protected, so instantiation is impossible. -> Details

Non Virtual Interface (NVI)

If a class has more than one parallel derived class, use the Non Virtual Interface idiom. -> Details

Overrides (Over)

Give all overrides of a virtual function the same default values.
Use the “virtual” keyword also on all overrides. -> Details

Right Destructor (RightDestr)

All virtual classes need a virtual destructor. If the class can not be instantiated, the destructor may be inline, else it has to be non-inline.
Non-virtual mix-in classes need a protected destructor. -> Details

Safe Copying (SafeCopy)

If a virtual class needs to be copied via references to a base class, disable the copy constructor and operator=() in the base classes and implement the clone() idiom instead. -> Details

Related Rules

How to Inherit -> CLSDESIGN:Inherit

Personal tools