हाल ही में मैंने एक डेवलपर के रूप में गूंगा है, इसलिए मैंने डुबकी ली, सी ++ पुस्तक प्राप्त की और सीखने के तरीके को ठीक से कैसे करना है। मेरे सिर में, मुझे पता है कि मैं क्या करना चाहता हूं। मैं प्रभावी रूप से Interface
चाहता हूं कि विरासत में, अधिलेखित किया जाना चाहिए (यदि यह संभव है?)। अब तक, मैं निम्नलिखित है:सी ++ अमूर्त बेस क्लास कन्स्ट्रक्टर/विनाशक - सामान्य शुद्धता
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' का उपयोग करना चाहिए और विनाशक '{}' होगा। कन्स्ट्रक्टर प्रारंभकर्ता सूची के बारे में भी जानें, और विचार करें कि आपको 'कॉन्स्ट char *' नहीं लेना चाहिए। – UncleBens