यदि मैं व्युत्पन्न कक्षा का ऑब्जेक्ट पास कर रहा हूं, तो व्युत्पन्न क्लास कैच ब्लॉक को बुलाया जाना चाहिए। लेकिन आउटपुट का कहना है कि अपवाद बेस क्लास द्वारा पकड़ा जाता है। क्यूं कर?जब मैं व्युत्पन्न वर्ग की वस्तु फेंक रहा हूं तो आधार वर्ग का ब्लॉक क्यों अपवाद पकड़ रहा है?
#include<iostream>
using namespace std;
class Base {};
class Derived: public Base {};
int main()
{
Derived d;
// some other stuff
try {
// Some monitored code
throw d;
}
catch(Base b) {
cout<<"Caught Base Exception";
}
catch(Derived d) { //This catch block is NEVER executed
cout<<"Caught Derived Exception";
}
getchar();
return 0;
}
आपको मूल आधार के साथ ऊपरी मामले के साथ पकड़ लेना चाहिए। वे अधिभारित नहीं हैं। –
डुप्ली नहीं, 'पकड़' खंड अलग हैं। – Oktalist
[स्काईपैकैक से वही जवाब] (http://stackoverflow.com/a/39537680/366904) डुप्ली में। –