एक अभिव्यक्ति कास्टिंग (शून्य) मूल रूप से संकलक को उस अभिव्यक्ति के परिणाम को अनदेखा करने के लिए कहता है (इसे कंप्यूटिंग के बाद)।
आपके उदाहरण में, प्रत्येक अभिव्यक्ति (प्रति कथन/रेखा) गतिशील रूप से नए ऑपरेटर के माध्यम से स्मृति आवंटित कर रही है - और चूंकि नया स्मृति में एक सूचक (पता) देता है, सामान्य अभ्यास उस पॉइंटर को स्टोर करना है परिवर्तनीय है कि आप अंततः वस्तु को हटाने और स्मृति को हटाने के लिए उपयोग कर सकते हैं। आपके उदाहरण में, चूंकि पॉइंटर को त्याग दिया जा रहा है, इसलिए एक स्पष्ट कलाकार (शून्य) प्रोग्रामर के इरादे को स्पष्ट करता है: "मुझे पता है कि मैं वास्तव में क्या कर रहा हूं - कृपया नए द्वारा लौटाए गए मान को छोड़ दें"
यदि आप हैं तकनीकीताओं में रुचि रखते हैं (सी ++ मानक, खंड 5 से उद्धरण):
किसी भी अभिव्यक्ति को स्पष्ट रूप से प्रकार के सीवी शून्य में परिवर्तित किया जा सकता है। अभिव्यक्ति मान को त्याग दिया जाता है। [नोट: हालांकि, यदि मान एक अस्थायी चर (12.2) में है, तो उस चर के लिए विनाशक सामान्य समय तक निष्पादित नहीं होता है, और चर के मूल्य को विनाशक को निष्पादित करने के उद्देश्य से संरक्षित किया जाता है। -जेंड नोट]
लवली-टू-रावल्यू (4.1), सरणी-टू-पॉइंटर (4.2), और फ़ंक्शन-टू-पॉइंटर (4.3) मानक रूपांतरण अभिव्यक्ति पर लागू नहीं होते हैं।
और आप सोच रहे हैं कि कैसे उन वस्तुओं को नष्ट कर दिया जा रहा है (यदि वास्तव में वे नष्ट कर दिया जा रहा है), जवाब है कि 'इस' QShortcut के निर्माता के भीतर सूचक एक ही मूल्य है कि के रूप में नई द्वारा वापस होना चाहिए , और इसे शॉर्टकट प्रबंधक को पास किया जा सकता है। ध्यान दें, कन्स्ट्रक्टर के भीतर 'यह' क्यूशॉर्टकट के निर्माता को पास किया जा रहा है 'यह' सूचक के समान नहीं है।
स्रोत
2009-06-22 22:38:43
अधिकतम तक अपने कंपाइलर चेतावनी स्तर को चालू करें। बिना शून्य (संकलित) संकलित करें और देखें कि क्या होता है। –
लेकिन अधिकांश समय मैं इसे देखता हूं क्योंकि ऐसा कोई है क्योंकि कोई सी लिख रहा है और यह महसूस नहीं करता है कि आप अब रूपांतरण को _need_ नहीं करते हैं। –