+6  A: 

No, in fact for it is unnecessary for the base class to have an explicitly defined constructor (though make sure you have a virtual destructor).

So for a typical interface you could have something like this:

class MyInterface {
public:
    virtual ~MyInterface() {}
    virtual void execute() = 0;
};

EDIT: Here's a reason why you should have a virtual destructor:

MyInterface* iface = GetMeSomeThingThatSupportsInterface();
delete iface; // this is undefined behaviour if MyInterface doesn't have a virtual destructor
Evan Teran
Here is a more direct question to explain your reasons http://stackoverflow.com/questions/270917/why-should-i-declare-a-virtual-destructor-for-an-abstract-class-in-c.
Kevin
+1  A: 

No, not in the example you provided. The base class' default constructors will be called automatically in the same order that the base classes are declared, before any member of the derived class is initialized.

Johann Gerell
+4  A: 

It is never obligatory to explicitly call the base class constructor, unless it has parameters. The compiler will call the constructor automatically. Theoretically the base class still has a constructor, but the compiler may optimize it away into non-existence if it doesn't do anything.

Qwertie