"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C++ क्लास विधियों में वेरिएबल्स को छाया देने से कैसे बचें?

C++ क्लास विधियों में वेरिएबल्स को छाया देने से कैसे बचें?

2024-12-22 को प्रकाशित
ब्राउज़ करें:515

How to Avoid Shadowing Variables in C   Class Methods?

C में वेरिएबल्स को छायांकित करना

कक्षाओं के भीतर वेरिएबल्स को परिभाषित करते समय, C एक ही नाम वाले वेरिएबल्स को अलग-अलग स्कोप में उपयोग करने की अनुमति देता है। यह घटना, जिसे "छाया देने वाले चर" के रूप में जाना जाता है, भ्रम और अप्रत्याशित व्यवहार को जन्म दे सकती है।

दी गई वर्ग परिभाषा में:

class Measure {
int N;
double measure_set[];
char nomefile[];
double T;
};

सदस्य चर T को get विधि में घोषित वेरिएबल T द्वारा छायांकित किया जाएगा:

void Measure::get() {
int M=0;
int nmax=50;

// ...

cout > T;
cout 

परिणामस्वरूप, प्राप्त विधि के भीतर टी में किया गया कोई भी संशोधन वास्तव में छायांकित चर माप_सेट[0] को प्रभावित करेगा। इस समस्या को सुधारने के लिए, नाम के टकराव से बचने के लिए अलग-अलग चर नामों का उपयोग करने या वर्ग सदस्य उपसर्गों का उपयोग करने पर विचार करें:

विशिष्ट चर नाम:

class Measure {
int N;
double measure_set[];
char nomefile[];
double temperature; // Rename variable
};

void Measure::get() {
// ...

cout > temperature;
cout 

वर्ग सदस्य उपसर्ग:

class Measure {
int m_N;
double m_measureSet[];
std::string m_nomefile;
double m_T;
};

void Measure::get() {
// ...

cout > m_T;
cout 

वर्ग नाम या विशिष्ट पहचानकर्ता के साथ सदस्य चर को उपसर्ग करके, आप नाम टकराव से बच सकते हैं और यह सुनिश्चित कर सकते हैं कि छायांकित चर वर्ग के सदस्यों के साथ हस्तक्षेप नहीं करते हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3