Нет, фактически для базового класса нет необходимости иметь явно определенный конструктор (хотя убедитесь, что у вас есть виртуальный деструктор).
Так что для типичного интерфейса у вас может быть что-то вроде этого:
class MyInterface {
public:
virtual ~MyInterface() {}
virtual void execute() = 0;
};
РЕДАКТИРОВАТЬ: Вот причина, почему вы должны иметь виртуальный деструктор:
MyInterface* iface = GetMeSomeThingThatSupportsInterface();
delete iface; // this is undefined behaviour if MyInterface doesn't have a virtual destructor