Конструкторы / деструкторы абстрактных базовых классов C ++ - общая правильность

Недавно я стал глупым разработчиком, поэтому я сделал решительный шаг, получил книгу по C ++ и научился делать вещи правильно. В голове я знаю, что хочу делать. Мне действительно нужен интерфейс , который при наследовании должен быть переопределен (если это возможно?). Пока у меня есть следующее:

class ICommand{

public:
    //  Virtual constructor. Needs to take a name as parameter
    //virtual ICommand(char*) =0;
    //  Virtual destructor, prevents memory leaks by forcing clean up on derived classes?
    //virtual ~ICommand() =0; 
    virtual void CallMe() =0;
    virtual void CallMe2() =0;
};

class MyCommand : public ICommand
{
public:
    // Is this correct?
    MyCommand(char* Name) { /* do stuff */ }
    virtual void CallMe() {}
    virtual void CallMe2() {}
};

Я намеренно оставил то, как, по моему мнению, конструктор / деструктор должен быть реализован в ICommand . Я знаю, что если я удалю комментарии, он не будет компилироваться. Пожалуйста, мог бы кто-нибудь:

  1. Покажите мне, как объявить конструктор / деструктор в ICommand и как они предназначены для использования в MyCommand
  2. Правильно ли я все настроил в ICommand , так что MyCommand должен перекрывать CallMe и CallMe2 .

Надеюсь, я не пропустил что-то действительно простое ...

16
задан Stuart Blackler 14 December 2011 в 23:53
поделиться