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;
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
|
Nice
ReplyDelete