Templates in hindi note







Introduction to C++ Templates
Templates C++ का एक important feature है। Templates C++ में generic programming की ability provide करते है। Generic programming में आप generic type के functions और classes create करते है।
Generic type के functions और classes दूसरे types (int, float, double आदि ) से independent होते है। इसलिए जो data type आप parameter के शक्ल  में pass करते है, generic function और class उसी type के बन जाते है।
ऐसा करने से आपको हर data type के लिए अलग से functions और classes लिखने की जरुरत  नहीं होती है और आपके program में unnecessary code नहीं होता है।
Templates के जरिये  से आप C++ में generic type के functions और classes create करते है। Template classes और functions को parameters के साथ define किया जाता है। ये parameter actual data type के जरिये  replace कर दिया जाता है और फिर functions और classes उसी type के बन जाते है।
आइये अब C++ में template functions और classes के बारे में जानने का कोशिश  करते है।

C++ Template Functions

एक template function किसी normal function की तरह ही होता है बस फर्क सिर्फ इतना होता है की एक template function कई तरह के data types (int, float etc ) के लिए execute हो सकता है।
यदि आप functions के जरिये  अलग अलग data types के लिए कोई identical task perform करना चाहते है तो आप एक template function create कर सकते है। 
उदाहरण के लिए यदि आप addition का function create करते है तो हर data type (int, float आदि) के लिए आपको अलग function create करना होगा। Integer type के लिए create किया गया addition function float values को नहीं add करेगा।
जैसा की आपको पता है की task एक ही (addition) है पर आपको functions अलग अलग create करने होंगे। ऐसी situation में आप सिर्फ एक addition का template function create कर सकते है जो जरुरत पड़ने पर integers और floats दोनों को add कर देगा।
हालाँकि ये काम आप function overloading के जरिये  भी कर सकते है लेकिन उसमे भी आपको बहुत अधिक code लिखना होगा। Template function create करने से आपको code भी कम लिखना पड़ेगा और काम भी आप आसानी से कर पाएंगे। 
आइये अब देखते है की C++ में आप किस प्रकार एक template function create कर सकते है। इसका general syntax नीचे दिया जा रहा है। 
template<class T>
return-type function-name (arguments with type T)
{
     // Statements to be executed (with T type)
ऊपर दिए गए syntax में T एक parameter है जो की अलग अलग data types के जरिये replace कर दिया जाता है और class एक keyword है। Class की जगह आप type name भी use  कर सकते है। Basically ये बताता है की यँहा के data type का नाम पास किया जायेगा। आइये अब इसे एक example  से समझने की कोशिश करते है।  
#include<iostream>
using namespace std;
// Template Function
template<class T>              
    T add(T x, T y)
     {
         return x + y;
     }
int main()
{
    cout<<“Sum of 5 & 3 is :”<<add(5,3); // Adding integers
    cout<<“Sum of 5.2 & 3.2 is :”<<add(5.2,3.2);     //Adding floats    
    return 0;

जैसा की आप ऊपर दिए गए example में देख पा रहे है, एक ही function के जरिये  integer और floating point दोनों तरह की values को add किया जा रहा है। ऐसा सिर्फ template functions के जरिये  ही संभव है। ये program निचे दिया गया output generate करता है।
Sum of 5 & 3 is : 8
Sum of 5.2 & 3.2 is : 8.4 
C++ Template Classes 
कभी कभी ऐसा भी होता है की आप अलग अलग data types के साथ एक जैसी classes create करते है। जैसे की आप एक class बनाते है जो किसी number को object construct करते समय argument के शक्ल  में लेती है और बाद में display() function के जरिये  इस number को display करती है।
इस तरह  आपको हर तरह (int, float, double) के number के लिए अलग से class create करनी होगी। ऐसी situation में आप template class create कर सकते है।
कभी ऐसा भी हो सकता है की आपको program बनाते समय ये पता ना हो की user किस तरह  की values enter करेगा। यानि की आपको ये पता ना हो की आपकी class के data members (variables) किस type के होंगे।
मिसाल  के लिए user का current bank balance whole number भी हो सकता है और floating point number भी हो सकता है। इस situation में भी आप template classes create कर सकते है।
जब आप template class create करते है तो उसके सभी functions को आप आसानी से template functions बना सकते है। आइये अब देखते है की आप किस प्रकार एक template class create कर सकते है। इसका general syntax नीचे दिया जा रहा है।
template<class T>
class class-name
{
    // Statements with T data type as required
ऊपर दिए गए syntax में जैसा की आपको पता है template एक keyword है और <class T> actual data type के लिए place holder है। 
Template class के objects create करने का तरीका भी अलग होता है। इसका syntax नीचे दिया जा रहा है। 
class-name <data-type> object-name(arguments-list);  
   
आइये अब template classes को एक complete उदाहरण के माध्यम से समझने का प्रयास करते है।
#include <iostream>
using namespace std;

// Template class
template<class T>
class NumDisplay

{
    private:
               T num;
    public:
                NumDisplay(T n)
                {
                      num = n;        
                 } 
                 void display()
                 {
                      cout<<“Number is : “<<num;
                  }
};
int main()
{
     // Passing data type & float value in constructor
     NumDisplay<float> obj(5.2); 
     obj.display();
     return 0;
}
ऊपर दिए गए उदाहरण में जब object construct होगा तो T float के जरिये replace कर दिया जायेगा और class में declare किया गया num variable float type का बन जाएगा। इस प्रकार template classes के जरिये  से ऐसी situations को भी handle कर सकते है जब आपको पता ना हो की user किस तरह की value enter करेगा।
Number is : 5.2  


Tausif

Hi! My name is TAUSIF AHMAD I have completed B.Tech in Computer Science from Maulana Azad National Urdu University Hyderabad. I am always ready to have new experiences meet new people and learn new things. 1. I am very interested in Frontend Development. 2. I love video editing and graphics designing. 3. I enjoy challenges that enables to grow. 4. I am part time Blogger.

1 Comments

Post a Comment
Previous Post Next Post