28.2 — Input with istream

The iostream library is fairly complex — so we will not be able to cover it in its entirety in these tutorials. However, we will show you the most commonly used functionality. In this section, we will look at various aspects of the input class (istream). The extraction operator As …

25.7 — Pure virtual functions, abstract base classes, and interface classes

Pure virtual (abstract) functions and abstract base classes So far, all of the virtual functions we have written have a body (a definition). However, C++ allows you to create a special kind of virtual function called a pure virtual function (or abstract function) that has no body at all! A …

25.6 — The virtual table

Consider the following program: #include <iostream> #include <string_view> class Base { public: std::string_view getName() const { return “Base”; } // not virtual virtual std::string_view getNameVirtual() const { return “Base”; } // virtual }; class Derived: public Base { public: std::string_view getName() const { return “Derived”; } virtual std::string_view getNameVirtual() const …

25.4 — Virtual destructors, virtual assignment, and overriding virtualization

Virtual destructors Although C++ provides a default destructor for your classes if you do not provide one yourself, it is sometimes the case that you will want to provide your own destructor (particularly if the class needs to deallocate memory). You should always make your destructors virtual if you’re dealing …