نوشته شده توسط
mostafi1391
من اومدم
ببینین تو کتاب دیتل در مورد قالبهای کلاس و قالبهای تابع خیلی توضیح میده ولی راستش هیچی حالیم نمیشه اخه مسلمون تابع , تابع دیگه میشه هرجایی ازش استفاده کرد یا کلاس کلاس دیگه میشه include ش کرد این قالب دیگه چه ضیغه ای؟ یا اصلا فرق قالبهای کلاس با کلاس های قالب و قالب های تابع و تابع های قالبی چیه
ممنون
چرا الکی شلوغش می کنی؟:)
شما فرض کن یک فانکشن داری این قرار توع double,int,float ,... رو بگیره و مقدار برگشتیش هم با توجه به متغیر های دریافت باشه یک راهش اینه بیایم برای هر کدوم یک فانکشن بنویسیم هی کپی پست کنیم یک راه دیگه هم هست که بیایم از template استفاده کنیم
شما یک فانکشن در نظر بگیر که برای به توان رسوندن نوشتی
int power(int num,int pow)
{
int temp=num;
while(pow>1)
{
num*=temp;
pow--;
}
return num;
}
خب حالا اگر این فانکشن رو این جوری صدا بزنی درسته
int a=3,b=4;
int c= power(a,b);
ولی اگر قرار باشه این جوری باشه چی؟
float a=3.2;
float c= power(a,4);
تو این حالت کامپایلر a رو تبدیل می کنه به int یعنی بازم جواب میشه همون ۸۱ برای حل این مشکل مجبوری دوباره همین فانکشنو یک بار دیگه بنویسی که این بار float بگیره به عنوان متغیر اول و یک float هم برگردونه خب حالا راهی که توی C++ برای حل این مشکل هست template ه
شما میای به جای این که فانکشن رو ۳ بار بنویسی برای double ,float ,int میای یک بار با template مینویسی به این شکل
template<class T>
T power(T num,int pow)
{
T temp=num;
while(pow>1)
{
num*=temp;
pow--;
}
return num;
}
برای کلاس ها هم به همین شکل یک مثال خوب برای کلاسی که از template استفاده کرده vector ه که شما می تونی هر نوع تایپی رو توش دخیره کنی