最近我作爲一個開發人員沉默寡言,所以我冒然冒險,拿到一本C++書籍,並學習如何正確地做事情。在我的腦海中,我知道我想要做什麼。我有效地想要一個Interface
,當繼承時,必須被覆蓋(如果這是可能的?)。到目前爲止,我有以下幾點: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
實施。我知道如果我刪除評論,它不會編譯。請替某人:
- 告訴我如何聲明構造/析構函數在
ICommand
以及它們是如何意味着MyCommand
- 要使用有我在
ICommand
正確設置的東西,使MyCommand
必須覆蓋CallMe
和CallMe2
。
我希望我沒有錯過很簡單的東西...
基本上你應該使用`std :: string`,而析構函數會是`{}`。還要了解構造函數初始化列表,並考慮是否不應該使用`const char *`。 – UncleBens 2011-12-14 23:59:43