Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ टेम्प्लेट्स को केवल हेडर फाइल में क्यों इम्प्लीमेंट किया जा सकता है?


जब आप C++ में एक टेम्प्लेट को इंस्टेंशिएट करते हैं, तो कंपाइलर एक नई क्लास बनाता है। इस क्लास में वे सभी स्थान जहां आपने टेम्प्लेट आर्गुमेंट्स रखे थे, उन्हें आपके द्वारा उपयोग करते समय पास किए गए वास्तविक आर्गुमेंट से बदल दिया जाता है। उदाहरण के लिए –

template<typename T> class MyClass {
    T foo;
    T myMethod(T arg1, T arg2) {
        // Impl
    }
};

और आपके प्रोग्राम में कहीं इस क्लास का उपयोग करें,

MyClass<int> x;

कंपाइलर हर उस टाइप आर्गुमेंट के लिए एक नई क्लास बनाता है जिसे आप इसे पास करते हैं। उदाहरण के लिए, यदि आपने अलग-अलग टेम्प्लेट आर्गुमेंट्स के साथ 3 ऑब्जेक्ट बनाए, तो आपको 3 क्लास मिलेंगी, जो निम्न के बराबर होंगी –

class MyClassInt {
    int foo;
    int myMethod(int arg1, int arg2) {
        // Impl
    }
};

ऐसा करने के लिए, कंपाइलर को क्लास और मेथड्स के इम्प्लीमेंटेशन तक पहुंच की आवश्यकता होती है, इससे पहले कि वह ऐसे स्टेटमेंट्स का सामना करे, ताकि उन्हें टेम्प्लेट आर्गुमेंट (इस मामले में int) के साथ इंस्टेंशिएट किया जा सके। यदि ये टेम्प्लेट क्लास इम्प्लीमेंटेशन हेडर में नहीं होते, तो वे एक्सेसिबल नहीं होते और इसलिए कंपाइल नहीं होंगे।

  1. मेरी HTML फ़ाइल सोर्स्ड मॉड्यूल से जावास्क्रिप्ट फ़ंक्शन क्यों नहीं ढूंढ पा रही? मेरी HTML फ़ाइल सोर्स्ड मॉड्यूल से जावास्क्रिप्ट फ़ंक्शन क्यों नहीं ढूंढ पा रही?

    यह तब हो सकता है जब आपने export स्टेटमेंट का उपयोग नहीं किया हो। उस फ़ंक्शन से पहले export का उपयोग करें जिसे स्क्रिप्ट फ़ाइल में इम्पोर्ट किया जाएगा। जावास्क्रिप्ट फ़ाइल इस प्रकार है जिसका फ़ाइल नाम demo.js है।demo.jsconsole.log(function will import); export function test(){ console.log(Importe

  1. - C++ में ऑटो स्टोरेज क्लास

    C में, ऑटो स्टोरेज क्लास स्पेसिफायर आपको ऑटोमैटिक स्टोरेज वाले वेरिएबल को स्पष्ट रूप से घोषित करने देता है। ऑटो स्टोरेज क्लास ब्लॉक के अंदर घोषित वेरिएबल्स के लिए डिफ़ॉल्ट है। एक वेरिएबल x जिसका ऑटोमैटिक स्टोरेज है, उस ब्लॉक से बाहर निकलने पर हटा दिया जाता है जिसमें x घोषित किया गया था। आप ऑटो स्टो

  1. - C++ सर्वश्रेष्ठ प्रोग्रामिंग भाषा क्यों है?

    C++ को एक बहुत शक्तिशाली भाषा के रूप में जाना जाता है। C++ आपको कंप्यूटर संसाधनों का उपयोग कैसे करें, इस पर बहुत नियंत्रण देता है, इसलिए सही हाथों में, इसकी गति और संसाधनों को सस्ते में उपयोग करने की क्षमता अन्य भाषाओं को पार करने में सक्षम होनी चाहिए। C++ के प्रदर्शन के कारण, इसका उपयोग अक्सर गेम इ