दोनों वाक्यविन्यास आप अपने कोड में उपयोग (this->...
और योग्य नाम) केवल आवश्यक विशेष रूप से जब वहाँ अस्पष्टता या कुछ अन्य नाम देखने मुद्दा, नाम छुपा, टेम्पलेट आधार वर्ग आदि
की तरह है वहाँ कोई अस्पष्टता नहीं है जब कर रहे हैं या अन्य समस्याएं जिन्हें आपको इनमें से किसी भी वाक्यविन्यास की आवश्यकता नहीं है। आपको बस एक उदाहरण के लिए एक सरल अयोग्य नाम है, जैसे Write
। बस Write
, this->Write
नहीं और Foundation::Write
नहीं। यह mWords
पर लागू होता है।
आईई। आपके विशिष्ट उदाहरण में एक सादा Write(mWords)
ठीक काम करेगा।
के रूप में
DoSomething(int mWords) {
...
तो यह स्थानीय mWords
पैरामीटर विरासत में मिला छिपाने वर्ग के सदस्य mWords
ऊपर समझने के लिए, यदि आपके DoSomething
विधि mWords
पैरामीटर था, और आप या तो
उपयोग करने के लिए होगा
DoSomething(int mWords) {
Write(this->mWords);
}
या
DoSomething(int mWords) {
Write(Foundation::mWords);
}
अपने इरादे को सही तरीके से व्यक्त करने के लिए, यानी छिपाने के माध्यम से तोड़ने के लिए।
यदि आपका Child
वर्ग के रूप में भी
class Child : public Base, public Foundation
{
int mWords
...
तो इस नाम को विरासत mWords
छिपाने में अपनी ही mWords
सदस्य था। इस मामले में this->mWords
दृष्टिकोण आप उचित नाम सामने लाने के लिए मदद नहीं होता है, और यदि आपका आधार वर्ग के दोनों एक mWords
सदस्य था आप समस्या को हल करने
DoSomething(int mWords) {
Write(Foundation::mWords);
}
योग्य नाम का उपयोग करना चाहते हैं ,
class Base {
public:
std::string mWords;
...
};
class Foundation {
public:
int mWords;
...
में के रूप में तो Child::DoSomething
में mWords
नाम अस्पष्ट होगा, और आपको बस इतना करना होगा
अस्पष्टता को हल करने के लिए 210
।
लेकिन, फिर से, अपने विशिष्ट उदाहरण में, जहां कोई अस्पष्टता नहीं है और कोई नाम यह सब छिपा पूरी तरह से अनावश्यक है।
समझ में आता है। धन्यवाद! –