मान लीजिए कि मैं अपने ऑब्जेक्ट के बाहरी फ़ंक्शन को बॉडी कन्स्ट्रक्टर के अंदर कुछ चेक करने के लिए कॉल करना चाहता हूं। चूंकि किसी ऑब्जेक्ट का जीवनकाल तब शुरू होता है जब कन्स्ट्रक्टर का शरीर इसके निष्पादन को समाप्त करता है, क्या यह एक असुरक्षित डिज़ाइन है?सी ++: ऑब्जेक्ट और बाहरी फ़ंक्शंस का जीवनकाल
struct A;
void check(A const&) { /* */ }
struct A
{
A() { check(*this); }
};
मेरा मतलब है, मैं फोन कर रहा हूँ और एक नहीं अभी तक जीवित वस्तु के साथ बाहरी कार्य करते हैं। क्या यह अनिर्धारित व्यवहार है?
संबंधित प्रश्न: यदि मैं उस कार्य फ़ंक्शन को सदस्य फ़ंक्शन (स्थैतिक या नहीं) के रूप में डालता हूं, तो मानक के बिना गैर-जीवित वस्तुओं का उपयोग करने के बारे में मानक कहता है लेकिन कक्षा के अंदर?
क्या कक्षा और उसके उपयोगकर्ताओं (एक कक्षा में बनाम कक्षा के जीवनकाल के प्रकार) के दृष्टिकोण के बीच जीवन भर की अवधारणा में कोई अंतर है?
[सी ++ एफएक्यू] (https://isocpp.org/wiki/faq/ctors#using-this-in-ctors) के बारे में जानकारी है। –
यह तब तक ठीक होना चाहिए जब तक कि फ़ंक्शन सदस्य वर्चुअल न हो और प्रारंभिक सूची में नहीं है – KABoissonneault
एक कॉन्स और एक संदर्भ है और न तो कार्यों की शुरुआत में शुरू किया गया है और न ही कार्यों के अंत में नष्ट हो गया है। कन्स्ट्रक्टर के अंदर वस्तु पूरी तरह से बनाई गई है। मुझे इस कोड में कोई समस्या नहीं दिखाई दे रही है – Brahim