क्या मैं कक्षा के कन्स्ट्रक्टर के भीतर से "यह" एक सूचक के रूप में एक फ़ंक्शन में पास कर सकता हूं, और कन्स्ट्रक्टर रिटर्न से पहले ऑब्जेक्ट के सदस्यों को इंगित करने के लिए इसका उपयोग कर सकता हूं?एक कन्स्ट्रक्टर के भीतर से एक समारोह में "यह" पास कर रहा है?
क्या यह सुरक्षित है, जब तक कि एक्सेस किए गए सदस्यों को फ़ंक्शन कॉल से पहले ठीक से प्रारंभ किया जाता है?
एक उदाहरण के रूप:
#include <iostream>
class Stuff
{
public:
static void print_number(void *param)
{
std::cout << reinterpret_cast<Stuff*>(param)->number;
}
int number;
Stuff(int number_)
: number(number_)
{
print_number(this);
}
};
void main() {
Stuff stuff(12345);
}
मैंने सोचा था कि यह काम नहीं होगा, लेकिन यह लगता है। क्या यह मानक व्यवहार है, या सिर्फ अपरिभाषित व्यवहार मेरे रास्ते जा रहा है?
आधा सच। एक निर्माता में इसका उपयोग करने से पहले दो बार सोचें, खासकर जब कक्षा से कुछ प्राप्त हो सकता है। उस स्थिति में आप आंशिक रूप से निर्मित कक्षा के साथ काम करते हैं और वर्चुअल कॉलिंग, afaik, अपरिभाषित है। सामान्य 'वर्ग राज्य' के लिए भी यही सच है: व्युत्पन्न कन्स्ट्रक्टर अभी भी इसे संशोधित कर सकता है। – user52875