सी ++ में वैज्ञानिक सॉफ्टवेयर कोडिंग के कई वर्षों के बाद सुनिश्चित नहीं हैं, मैं अभी भी नहीं अपवाद के लिए इस्तेमाल किया पाने के लिए लग सकता है और मुझे पता नहीं है जब मैं उन्हें इस्तेमाल करना चाहिए। मुझे पता है कि उन्हें कार्यक्रम प्रवाह को नियंत्रित करने के लिए उपयोग कर एक बड़ा (एक वर्ग है कि एक छवि मुखौटा का प्रतिनिधित्व करता है और उपयोगकर्ता बहुभुज के रूप में यह करने के लिए क्षेत्रों को जोड़ने की सुविधा देता है से अंश) उदाहरण का अनुसरण नहीं-नहीं, लेकिन अन्यथा की तुलना में है कि ... पर विचार करें:जब C++ में अपवाद का उपयोग करने के
class ImageMask
{
public:
ImageMask() {}
ImageMask(const Size2DI &imgSize);
void addPolygon(const PolygonI &polygon);
protected:
Size2DI imgSize_;
std::vector<PolygonI> polygons_;
};
इस कक्षा के लिए डिफ़ॉल्ट कन्स्ट्रक्टर एक अपरिभाषित छवि आकार के साथ एक बेकार उदाहरण बनाता है। मैं नहीं चाहता कि उपयोगकर्ता ऐसी ऑब्जेक्ट में बहुभुज जोड़ने में सक्षम हो। लेकिन मुझे यकीन नहीं है कि उस स्थिति को कैसे संभालना है। जब आकार अपरिभाषित है, और addPolygon() कहा जाता है, क्या मुझे:
- चुपचाप वापसी,
- ज़ोर (imgSize_.valid) इस वर्ग का उपयोग कर कोड में उल्लंघन का पता लगाने और एक रिलीज होने से पहले उन्हें ठीक करने के,
- एक अपवाद फेंक दिया?
अधिकांश समय मैं 1 या 2 के साथ जाता हूं) (मेरे मनोदशा के आधार पर), क्योंकि ऐसा लगता है कि अपवाद महंगा, गन्दा और बस इतना आसान परिदृश्य के लिए अधिक है। कृपया कुछ अंतर्दृष्टि कृपया?
डिफ़ॉल्ट निर्माण को रोकें? अमान्य 'छविमास्क' उदाहरण बनाए जा रहे हैं। – hmjd
आपको डिफ़ॉल्ट कन्स्ट्रक्टर की आवश्यकता क्यों है? –
एक डिफ़ॉल्ट कन्स्ट्रक्टर उपयोगी हो सकता है ताकि आप उस प्रकार की ऑब्जेक्ट्स को कुछ कंटेनरों में रख सकें। – MadScientist