आरटीटीआई के बिना और आभासी कार्यों के साथ। आभासी विधि कॉल के साथसी ++ ऑब्जेक्ट का भंडारण प्रकार, कौन सी पसंद बेहतर है?
और विधि के अंदर आईडी रखें::
class Base {
public:
virtual ~Base();
virtual int getType() const =0;
};
class Derived : public Base {
public:
virtual int getType() const { return DerivedID; }
};
इनलाइन विधि कॉल के साथ
और आधार वर्ग में आईडी रखने
मैं 2 अलग सामान्य समाधान वस्तु के प्रकार प्रदान करने के लिए का सामना करना पड़ा :
class Base {
int id_;
public:
virtual ~Base();
inline int getType() const { return id_; }
};
class Derived : public Base {
public:
Derived() { id_=DerivedID;}
};
सामान्य रूप से बेहतर विकल्प क्या होगा और उनमें से कौन सा समर्थक होगा?
यदि आप दूसरा चुनते हैं, तो बेस के संरक्षित कन्स्ट्रक्टर को आईडी को तर्क के रूप में ले जाएं - फिर कम से कम इसे हमेशा प्रारंभ किया जाएगा और कार्यान्वयनकर्ता इसे – stijn
इंटरफ़ेस के साथ चिपकाने के लिए मजबूर होंगे! –