क्या चालकों को सामान्य रूप से फेंकने की अनुमति है? हाँ। वे चाहिए? सं।
आम तौर पर, आप उनके भीतर कुछ भी नहीं करना चाहिए जो फेंक सकता है। आपको स्मृति आवंटित नहीं करना चाहिए, अन्य कोड को कॉल करना, या ऐसा कुछ भी नहीं होना चाहिए। एक चालक कन्स्ट्रक्टर लिखने का एकमात्र कारण किसी और के मेमोरी पॉइंटर्स और ऑब्जेक्ट रेफरेंस के साथ फरार करना है। आपको कुछ मूल प्रकारों की प्रतिलिपि बनाना चाहिए और अन्य ऑब्जेक्ट में मानों को कम करना चाहिए। उन चीजों को फेंकना नहीं चाहिए।
तो इसकी अनुमति होने पर, यह एक अच्छा विचार नहीं है। यदि आप इसे कर रहे हैं, तो अपने कदम संचालन में आप क्या कर रहे हैं पर पुनर्विचार करें।
स्रोत
2012-02-12 17:05:42
मुझे मानक कन्स्ट्रक्टरों को फेंकने की अनुमति नहीं देने के बारे में मानक में कुछ भी नहीं देखा, लेकिन मैंने देखा कि "कक्षा एक्स के लिए निहित रूप से घोषित चालक कन्स्ट्रक्टर के पास 'एक्स :: एक्स (एक्स एंड amp)' ", और मुझे वहां 'अस्वीकरण' नहीं दिखाई देता है। –
अंतिम मसौदे में, मुझे किसी भी फ़ंक्शन के लिए 'अस्वीकरण' घोषित नहीं किया गया है ... – ronag
@ronag: क्या आप वाकई देख रहे हैं? क्योंकि मैंने N3337 खोला और अभी "'noexcept'" की खोज की और तत्काल कुछ वर्ग के' स्वैप 'फ़ंक्शन को मिला। –