ऐसा करने से कुछ स्थिर पॉलीमोर्फिज्म कहा जाता है।
मान लें कि मैंने कतार कक्षा का उपयोग करके एक एल्गोरिदम लिखा है। कतार के अंत में जोड़ने के लिए कतार के अगले तत्व को प्राप्त करने के लिए इसमें एक फ्रंट() फ़ंक्शन है, और एक एनक्यू() फ़ंक्शन है। अब मान लीजिए कि मैंने पाया कि यह कतार वर्ग खराब और बहुत धीमा लिखा गया है, और मैं std :: वेक्टर का उपयोग करना चाहता हूं जो बहुत तेज़ है (मुझे पता है कि एक std :: queue है, यह सिर्फ एक उदाहरण है)। यदि std :: वेक्टर का पहला तत्व प्राप्त करने का एकमात्र तरीका v [0] के साथ था, तो मुझे अपने कोड से गुजरना होगा और मेरी सभी कॉल को [0] के साथ आगे() में बदलना होगा। लेकिन फ्रंट() को लागू करके, std :: वेक्टर अब मेरी कतार कक्षा के लिए एक ड्रॉप-इन प्रतिस्थापन हो सकता है। मुझे बदलने वाला एकमात्र कोड मेरे एल्गोरिदम में कंटेनर का प्रकार है।
अधिक रोचक ... क्यों एक फ्रंट() है जब पहले से ही एक शुरुआत() है? – Inverse
@ इनवर्क्स: क्योंकि कंटेनर एडाप्टर 'std :: queue' और 'std :: stack' में' front()' है लेकिन 'start()' नहीं है। –
और 'बैक()' के साथ संगत होने के लिए, 'myvector [myvector.size() - 1] 'वह सीधे आगे नहीं है। – dalle