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;.
  • 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.

Thanks for your feedback.