संभव डुप्लिकेट अधिभावी:
Calling virtual functions inside constructorsसी ++ आभासी विधि
main.cpp
#include <iostream>
class BaseClass {
public:
BaseClass() {
init();
}
virtual ~BaseClass() {
deinit();
}
virtual void init() {
std::cout << "BaseClass::init()\n";
}
virtual void deinit() {
std::cout << "BaseClass::deinit()\n";
}
};
class SubClass : public BaseClass {
public:
virtual void init() {
std::cout << "SubClass::init()\n";
}
virtual void deinit() {
std::cout << "SubClass::deinit()\n";
}
};
int main() {
SubClass* cls = new SubClass;
delete cls;
return 0;
}
क्यों init()
है और deinit()
ठीक से ओवरराइड नहीं और BaseClasses 'तरीकों ar ई SubClasses के बजाय बुलाया? इसे काम करने के लिए क्या आवश्यकताएं हैं?
BaseClass::init()
BaseClass::deinit()
@LightnessRacesinOrbit: इसके लिए खेद है। मैंने सीधे समस्याकार और विनाशक के साथ समस्या को नहीं जोड़ा, जो मुझे लगता है कि मुझे यह सवाल क्यों नहीं मिला। –
मुझे लगता है कि औचित्य यह है कि 'सबक्लास' के निर्माता को यह मानने की अनुमति है कि 'बेस क्लास' पूरी तरह से निष्पादित होने पर बनाया गया है। विनाशक के लिए इसी तरह। –