It outlines the basic concepts needed before testing C++ using the Class Factory View.
Pure virtual functions and abstract classes
Pure virtual functions
- Virtual function with declaration but no definition .
- Displayed as
= 0
. - Virtual function implemented in derived class .
Abstract classes
- Classes that have pure virtual functions as members.
- Abstract classes cannot create objects.
- Declare a variable as a pointer or reference type.
- ex.
AbstractClass * class1;
.
- ex.
- Declare a variable as a pointer or reference type.
- Support for polymorphism in object-oriented programming.
- Classes that inherit from an abstract class must override pure virtual functions.
- If a derived class that inherits from an abstract class does not override a pure virtual function, the derived class is also an abstract class.
class Abstract {
virtual void f() = 0; // pure virtual
}; // "Abstract" is abstract
class Concrete : Abstract {
void f() override {} // non-pure virtual
virtual void g(); // non-pure virtual
}; // "Concrete" is non-abstract
class Abstract2 : Concrete {
void g() override = 0; // pure virtual overrider
}; // "Abstract2" is abstract
int main()
{
// Abstract a; // Error: abstract class
Concrete b; // OK
Abstract& a = b; // OK to reference abstract base
a.f(); // virtual dispatch to Concrete::f()
// Abstract2 a2; // Error: abstract class (final overrider of g() is pure)
}
Need more help with this?
Don’t hesitate to contact us here.