यह सिर्फ एक प्रयोग कोड है।वर्चुअल ऑपरेटर ओवरलोडिंग ->()
struct B
{
virtual B* operator ->() { return this; }
void foo() {} // edit: intentionally NOT virtual
};
struct D : B
{
virtual D* operator ->() { return this; }
void foo() {}
};
int main()
{
B &pB = *new D;
pB->foo(); // calls B::foo() !
}
मुझे पता है कि operator
वस्तु या संदर्भ का उपयोग कर के नाम से जाना पड़ता है; इस प्रकार उपर्युक्त मामले में संदर्भ pB
अभी भी B
की ऑब्जेक्ट पर दृढ़ संकल्प करता है? हालांकि यह व्यावहारिक नहीं होगा, लेकिन जिज्ञासा के लिए, क्या D::operator ->
pB
के माध्यम से आमंत्रित करने का कोई तरीका है?
ऑपरेटर-> आभासी होने के लिए समझ में नहीं आता है जब आप foo() वर्चुअल होना चाहते हैं। –
मुझे यहां कुछ याद आ रहा है, लेकिन 'void foo()' वर्चुअल बनाने में क्या गलत है? 'ऑपरेटर ->()' इस स्थिति में पूरी तरह से व्यर्थ है, खासकर जब से यह 'यह' देता है। –
@ सिलिको में, मैं मानता हूं, यह जानने के लिए यह एक प्रयोग कोड है कि क्या होता है जब ऑपरेटर -> 'वर्चुअल 'बन जाता है। मैंने अपना प्रश्न संपादित किया है। धन्यवाद। – iammilind