जैसा कि हमने देखा था कि बहुरूपता ठीक से है जिसके द्वारा विभिन्न वर्गों के लिए संबंधित वस्तुओं के लिए एक ही संदेश के लिए, लेकिन अलग अलग रूपों में जवाब कर रहे हैं दर्शाता है. एक ठीक से आवश्यक या बहुरूपता की आवश्यकताओं इसलिए जो वर्ग सिद्धांत से संबंधित किसी भी संबंध के बिना वर्गों की वस्तुओं को संदर्भित करने की क्षमता है. यह हमें एक भी सूचक चर का उपयोग करने के लिए विभिन्न वर्गों की वस्तुओं का उल्लेख करने की अनुमति देता है. यह एक एक समारोह के लिए एक वस्तु की देर बंधन के रूप में कहा जाता है और एक आभासी समारोह का उपयोग करके प्राप्त किया.
एक v
+ Irtual समारोह एक समारोह है कि आभासी रूप में एक आधार वर्ग में घोषित किया जाता है और व्युत्पन्न वर्ग में नए सिरे से परिभाषित है. आभासी रूप में एक समारोह की घोषणा करने के लिए. इसकी घोषणा करने के लिए खोजशब्द 'आभासी व्युत्पन्न वर्ग में समारोह की परिभाषा से पहले आधार वर्ग में समारोह की परिभाषा को ओवरराइड करता है. जब सामान्य पहुँचा. सदस्य समारोह सूचक अंक के किसी अन्य प्रकार की तरह आभासी कार्यों व्युत्पन्न वस्तु है कि एक आभासी समारोह में शामिल करने के लिए व्यवहार सी + + यह निर्धारित करता है जो कि ऑब्जेक्ट के प्रकार पर आधारित कॉल के समारोह में संस्करण वहाँ सूचक द्वारा बताया. इस प्रकार जब विभिन्न वस्तुओं आभासी समारोह के विभिन्न संस्करणों की ओर इशारा कर रहे हैं क्रियान्वित कर रहे हैं.
आभासी कार्यों के लिए नियम: -
जब आभासी कार्यों देर बंधन हम कुछ बुनियादी नियम है कि संकलक आवश्यकताओं को संतुष्ट पालन करना चाहिए लागू करने के लिए पैदा कर रहे हैं.
1. आभासी कार्यों के कुछ वर्ग के सदस्य होना चाहिए.
2. वे स्थैतिक सदस्य नहीं किया जा सकता है.
3. वस्तु संकेत का उपयोग करना उन्हें accesses.
4. एक आभासी समारोह में दूसरे वर्ग के एक दोस्त हो सकता है.
5. अगर एक ही नाम के साथ दो कार्य अलग प्रोटोटाइप उन्हें अतिभारित कार्यों के रूप में विचार और आभासी समारोह तंत्र नजरअंदाज कर दिया है एक आभासी समारोह और सभी व्युत्पन्न वर्ग के सदस्यों के आधार वर्ग संस्करण के प्रोटोटाइप पहचान की जानी चाहिए.
6. एक आधार वर्ग में एक आभासी समारोह भले ही इसे इस्तेमाल किया जा सकता है परिभाषित किया जा चाहिए.
7. हम आभासी भवन निर्माताओं नहीं है, लेकिन हम आभासी destructors कर सकते हैं.
8. जबकि एक आधार सूचक व्युत्पन्न वस्तु के किसी भी प्रकार को इंगित रिवर्स सच यही कहते हैं कि हम एक सूचक एक व्युत्पन्न वर्ग का उपयोग नहीं करने के लिए आधार प्रकार के एक वस्तु का उपयोग कर सकते हैं नहीं है.
9. जब एक आधार सूचक अंक व्युत्पन्न वर्ग incrementing या decrementing यह व्युत्पन्न वर्ग यह incremented है या केवल decremented इसके आधार प्रकार के सापेक्ष के अगले ऑब्जेक्ट को इंगित करने के लिए नहीं कर देगा. इसलिए हम इस पद्धति का उपयोग नहीं अगले ऑब्जेक्ट के लिए सूचक ले जाएँ चाहिए.
10. यदि एक आभासी आधार वर्ग समारोह में परिभाषित किया गया है यह होना जरूरी व्युत्पन्न वर्ग में नए सिरे से परिभाषित नहीं की जरूरत है. ऐसे मामलों में कॉल आधार समारोह आह्वान करेंगे.
उदाहरण: 1 -
#
#
वर्ग आधार
{
सार्वजनिक:
शून्य (प्रदर्शन)
{
अदालत <<"\ n आधार प्रदर्शन";
}
शून्य (शो)
{
अदालत <<"\ n शो आधार है \ n";
}
};
व्युत्पन्न वर्ग: सार्वजनिक आधार
{
सार्वजनिक:
शून्य (प्रदर्शन)
{
अदालत <<"\ n व्युत्पन्न प्रदर्शन";
}
शून्य (शो)
{
अदालत <<"\ n दिखाने व्युत्पन्न";
}
};
शून्य (मुख्य)
{
आधार ख;
घ व्युत्पन्न;
बेस * ptr;
(clrscr);
अदालत <<"\ n --- ptr अंक आधार पर --- \ n";
ptr = &b;
ptr-> (प्रदर्शन);
ptr-> (शो);
अदालत <<"\ --- n dervied --- \ n ptr अंक";
ptr = &D;
ptr-> (प्रदर्शन);
ptr-> (शो);
(getch);
}
2. आभासी समारोह पर कार्यक्रम
#
#
वर्ग आधार
{
सार्वजनिक:
आभासी शून्य (शो)
{
अदालत <<"बेस कक्षा";
}
};
वर्ग der1 सार्वजनिक आधार:
{
सार्वजनिक:
शून्य (शो)
{
अदालत <<"\ n der1 वर्ग";
}
};
der2 वर्ग: सार्वजनिक आधार
{
सार्वजनिक:
शून्य (शो)
{
अदालत <<"\ n der2 वर्ग";
}
};
शून्य (मुख्य)
{
(clrscr);
बेस * ptr;
आधार ख;
ptr = &b;
ptr-> (शो);
der1 d1;
der2 d2;
ptr = &d1;
ptr-> (शो);
ptr = &d2;
ptr-> (शो);
(getch);
}
समनुदेशन: -
1) वैप आभासी समारोह घोषणा करने के लिए और उसी आधार और व्युत्पन्न वर्ग में परिभाषित समारोह निष्पादित.
वैप 2) दोनों का आधार है और व्युत्पन्न वर्ग के लिए सूचक का उपयोग करने के लिए और सदस्य समारोह कॉल आभासी खोजशब्द का उपयोग करें..
- शुद्ध आभासी कार्य:
हम एक आभासी समारोह के लिए मान शून्य (0) बताए द्वारा लागू कर सकते हैं आभासी समारोह है जो किसी भी शरीर या बयान नहीं है 'शुद्ध आभासी समारोह' के रूप में घोषित किया जा सकता है
जैसे
आभासी शून्य प्रदर्शन () = 0;
यहाँ प्रदर्शन कार्यों शुद्ध आभासी जाना जाता है क्योंकि यह मान रही है.
उदाहरण: -
1. शुद्ध आभासी समारोह पर कार्यक्रम.
#
#
वर्ग आकार
{सार्वजनिक:
आभासी शून्य (आकर्षित) = 0; / / शुद्ध आभासी समारोह
};
वर्ग cir सार्वजनिक आकार:
{सार्वजनिक शून्य (आकर्षित)
{
अदालत <<"\ n एक चक्र आकर्षित";}
};
वर्ग रंगरूट सार्वजनिक आकार:
{सार्वजनिक शून्य (आकर्षित)
{
अदालत <<".. \ n एक आयत आकर्षित";
}
};
वर्ग त्रिकोणीय सार्वजनिक आकार:
{सार्वजनिक शून्य (आकर्षित)
{
अदालत <<".. \ n एक त्रिकोण आकर्षित";
}
};
शून्य (मुख्य)
{Int चुनते हैं;
(clrscr);
cir ग;
रंगरूट r;
त्रिकोणीय टी;
आकृति * एस / आधार / वर्ग सूचक
अदालत <<"\ n1: चक्र \ n2: आयत n3 \: त्रिकोण;
अदालत <<".. \ n उर पसंद दर्ज करें";
cin>> चुनते हैं;
स्विच (ऑप्ट)
{
मामला 1: एस = &c;
एस> आकर्षित ();
तोड़;
मामले 2: एस = &r;
एस> आकर्षित ();
तोड़;
मामला 3: = &t;
एस> आकर्षित ();
तोड़;
डिफ़ॉल्ट:
अदालत <<"\ गलत चुनाव";
}
(getch);
}
सार कक्षाएं: -
एक अमूर्त वर्ग एक वर्ग है कि विशेष रूप से एक आधार वर्ग के रूप में इस्तेमाल किया जा बनाया गया है है. एक अमूर्त वर्ग में कम से कम एक शुद्ध आभासी समारोह है. तुम वर्ग घोषणा में एक आभासी सदस्य समारोह की घोषणा में एक शुद्ध विनिर्देशक (= 0) का उपयोग करके एक शुद्ध आभासी समारोह घोषणा
Virtual functions (Hindhi)