इस ट्यूटोरियल में, हम C++ में टेम्पलेट्स और स्टैटिक वेरिएबल्स को समझने के लिए एक प्रोग्राम पर चर्चा करेंगे।
फंक्शन और क्लास टेम्पलेट्स के मामले में, टेम्पलेट के प्रत्येक इंस्टेंस (instance) का स्टैटिक वेरिएबल्स की अपनी स्थानीय प्रति (local copy) होती है।
उदाहरण
#include <iostream>
using namespace std;
template <typename T>
void fun(const T& x) {
static int i = 10;
cout << ++i;
return;
}
int main() {
fun<int>(1); // प्रिंट: 11
cout << endl;
fun<int>(2); // प्रिंट: 12 (इसी इंस्टेंस का स्टैटिक वेरिएबल)
cout << endl;
fun<double>(1.1); // प्रिंट: 11 (नए इंस्टेंस का अलग स्टैटिक वेरिएबल)
cout << endl;
return 0;
}
आउटपुट
11 12 11
व्याख्या
fun<int>का पहला कॉल: स्टैटिकi10 से 11 होता है।fun<int>का दूसरा कॉल: वहीi11 से 12 होता है।fun<double>का कॉल:doubleके लिए टेम्पलेट का एक अलग इंस्टेंस बनता है, जिसका अपना स्टैटिकiहोता है (फिर से 10 से शुरू होकर 11 होता है)।
यह दर्शाता है कि प्रत्येक टेम्पलेट इंस्टेंसिएशन के लिए स्टैटिक वेरिएबल्स स्वतंत्र होते हैं।