Virtual Functions and Abstract Classes

I read in my book:

An abstract class is a class that is designed specifically for use as a base class. An abstract class contains at least one pure virtual function. You declare a pure virtual function using a pure qualifier (= 0) in the declaration of a virtual member function in the class declaration.

Is it mandatory for an abstract class to have a virtual function? Why?

What is the difference between pure virtual function and virtual function and what is their need?

+5
source share
10 answers

, , .

A () , , .

, . - , . , . , .

+7

, , . . - . .

+2
+1

, . , , , . , , :)

+1

, .

, , , , :

class MyAbstractClass
{
    virtual ~MyAbstractClass() = 0;

    virtual void f() 
    {
        IHaveAnImplementation(); 
        SoICannotBePure();
    }
};

// The destructor can unfortunately not be defined inline
MyAbstractClass::~MyAbstractClass() {}

: , . , , , .

+1

? ?

.

, .

, . , ++.

?

:

  • ( , ).

0

, , .

0

++ - . , , , . , , .

, . =0 , , . , , , .

"" - , virtual, . , , , . virtual , , .

0

.

.

.

0

- , ( ) . " = 0" -.

:

class AbstractClass {
public:
  virtual void AbstractMemberFunction() = 0; // Pure virtual function makes
                                             // this class Abstract class.
  virtual void NonAbstractMemberFunction1(); // Virtual function.

  void NonAbstractMemberFunction2();
};

. . (, ) , - - . , - - undefined, ( ).

0
source

All Articles