Middle — Middle+
როგორ გამოიყურება შაბლონის ფუნქციის საბოლოო კომპილირებული კოდი, როდესაც ის გამოიძახება სხვადასხვა ტიპის არგუმენტებით?
sobes.tech AI
პასუხი AI-სგან
C++-ում շաբլոնային ֆունկցիայի կոմպիլյացիայի ժամանակ՝ յուրաքանչյուր եզակի արգումենտների տիպերի հավաքածուի համար, կոմպիլատորը ստեղծում է ֆունկցիայի առանձին տարբերակ (շաբլոնը ինստանցավորում է): Դա նշանակում է, որ եթե لديك մի շաբլոն՝
template<typename T>
T add(T a, T b) {
return a + b;
}
և կանչում եք add(1, 2) և add(1.5, 2.5), ապա կոմպիլատորը կստեղծի երկու առանձին ֆունկցիա՝
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
Այսպիսով, վերջնական կոմպիլյատացված կոդը պարունակում է կոնկրետ տարբերակներ յուրաքանչյուր տիպի համար, որի հետ այն կանչվել է: Սա թույլ է տալիս օգտագործել շաբլոնները որպես ընդհանուր ֆունկցիաներ՝ առանց կատարողականության կորուստի, քանի որ կանչերը վերածվում են սովորական ֆունկցիաների կոնկրետ տիպերով։