Go back to Richel Bilderbeek's homepage.
Go back to Richel Bilderbeek's C++ page.
virtual is a keyword to denote that
a class member function might have different behaviour in its derived classes.
Example
Humans say hello differently. In this example there are two kinds of humans that say
hello differently: SilentHuman and LoudHuman:
Note that it is decided that a plain Human cannot say hello. This can be stated by ending the
declaration of SayHello with '=0'. This also makes it impossible to create a
Human (you can only create (derived) types of Human). This makes Human an abstract base class.
- Herb Sutter, Andrei Alexandrescu. C++ coding standards: 101 rules, guidelines, and best practices. 2005. ISBN: 0-32-111358-6. Item 50: 'Make base class destructors public and virtual, or protected and nonvirtual'
- Herb Sutter, Andrei Alexandrescu. C++ coding standards: 101 rules, guidelines, and best practices. 2005. ISBN: 0-32-111358-6. Item 49: 'Avoid calling virtual functions in constructors and destructors'
- Herb Sutter. Exceptional C++. ISBN: 0-201-61562-2. Item 23, page 84, guideline: 'Avoid public virtual functions; prefer using the Template Method pattern instead'
- Bjarne Stroustrup. The C++ Programming Language (4th edition). 2013. ISBN: 978-0-321-56384-2. Chapter 17.7. Advice. page 525: '[4] If a class has a virtual function, it needs a virtual destructor'
- Bjarne Stroustrup. The C++ Programming Language (4th edition). 2013. ISBN: 978-0-321-56384-2. Chapter 20.7. Advice. page 611: '[8] A class with a virtual function should have a virtual destructor'
- Bjarne Stroustrup. The C++ Programming Language (4th edition). 2013. ISBN: 978-0-321-56384-2. Chapter 22.7. Advice. page 663: '[7] Don't call virtual functions during construction and destruction'
Go back to Richel Bilderbeek's C++ page.
Go back to Richel Bilderbeek's homepage.
