एक सहकर्मी ने निम्नलिखित कोड लिखा, जिसे मैं आश्वस्त हूं, गलत है।एक निर्माता के इस उपयोग के लिए शब्दावली क्या है?
मैं उसे करने के लिए समस्याओं व्याख्या करना चाहते हैं, लेकिन उचित शब्द पता नहीं है, तो मैं संदर्भ मेरी स्थिति का समर्थन करने के नहीं मिल सकता है:
उनकी कोड:
BSTR someString = _bstr_t(L"Hello World");
क्यों मुझे लगता है कि यह गलत है:
मेरा मानना है कि _bstr_t(L"Hello World");
_bstr_t
के लिए निर्माता को कॉल करता है, और उस प्रकार का एक अल्पकालिक अस्थायी चर बनाता है। वह अस्थायी स्वचालित रूप से हटा दिया जाएगा, और कोड की इस पंक्ति के बाद (अर्ध-कॉलन अनुक्रम बिंदु के बाद) इसकी स्ट्रिंग-स्पेस मुक्त हो जाती है।
यह someString
छोड़ देगा जो स्मृति को इंगित करता है।
सवाल:
एक निर्माता की है कि कॉल के लिए उचित शब्द क्या है?
क्या आप कुछ संदर्भ/नियम/पृष्ठों को इंगित कर सकते हैं जो विस्तार से विस्तार का वर्णन करते हैं?
क्या अस्थायी _bstr_t
ऑब्जेक्ट का कोई शब्द है?
मुझे लगता है कि मैं इसे "अज्ञात, अस्थायी चर" कहूंगा, लेकिन मुझे नहीं पता कि यह तकनीकी रूप से सटीक है या नहीं।
(या शायद मैं अपने विश्लेषण में पूरी तरह से गलत हूँ .... यदि हां, तो मैं जानकर प्रसन्नता होगी)
स्पष्टीकरण के लिए:,
_bstr_t is a C++ class सामान्यतः माइक्रोसॉफ्ट द्वारा अपने बीएसटी प्रकार को लपेटने के लिए उपयोग किया जाता है, इसलिए इसमें रचनाकार/विनाशक/ऑपरेटर आदि हैं।
BSTR
एक टाइपिफ़ है बस एक WCHAR*
, इसलिए इसमें कोई तर्क नहीं है। यह सिर्फ एक गूंगा सूचक है।
धन्यवाद, शब्द "रूपांतरण कन्स्ट्रक्टर" * वह है जिसे मैं ढूंढ रहा था। – abelenky