template< int size > class IntegerArray




Download 124,09 Kb.
bet6/7
Sana18.01.2024
Hajmi124,09 Kb.
#140451
1   2   3   4   5   6   7
Bog'liq
Funksiyalarni yaratish va ulardan foydalanish

template< int size >
class IntegerArray
{int Array[ size ];
/* ... */};
shablon< int size > // Shablon prototipi
void PrintArray( IntegerArray< size > massiv ) { /* ... */ } // Shablon chaqiruvi
// Shablon ob'ektidan foydalanish
IntegerArrayia;
PrintArray(ia);
Shablondan foydalanishni osonlashtirish va yuzaga kelishi mumkin bo'lgan xatolarni oldini olish uchun tilga xulosa chiqarish qoidalari kiritiladi, masalan, belgilar qatorini saralash uchun sort< int > dan foydalanishga urinish.
Agar shablon parametrini bir nechta argumentlardan chiqarish mumkin bo'lsa, unda xulosaning natijasi ushbu argumentlarning barchasi uchun aynan bir xil bo'lishi kerak. Masalan, quyidagi qo'ng'iroqlar noto'g'ri:
min (0, 'a');
min (7, 7.0);
Shablonlardagi xatolar
Shablonni ishlatishdan oldin maxsus shablon parametrlaridan foydalanish bilan bog'liq xatolarni aniqlab bo'lmaydi. Masalan, min shablonning o'zi xatosiz, lekin uni '<' operatori aniqlanmagan turlar bilan ishlatish xatolikka olib keladi:
struct A
{
int a;
};
A obj1, obj2;
min( obj1, obj2 );
Agar shablonni birinchi marta ishlatishdan oldin '<' operatsiyasini kiritsangiz, xatolik yo'qoladi. C++ da shablonlarning moslashuvchanligi shunday namoyon bo'ladi:
friend inline bool operator< ( const A& a1, const A& a2 ) { return a1.a < a2.a; }
min( obj1, obj2 );

Sinf shablonlar


Butun sonlarning bog'langan ro'yxatini amalga oshiradigan sinfda ro'yxatga yangi element qo'shish va kerakli elementni qidirish algoritmlari ro'yxat elementlarining butun son ekanligiga bog'liq emas. Xuddi shu algoritmlar belgilar, satrlar, sanalar, o'yinchilar sinflari va boshqalar ro'yxatiga nisbatan qo'llaniladi.
template< class T >
class List
{
/* ... */
public:
void Add(
Download 124,09 Kb.
1   2   3   4   5   6   7




Download 124,09 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



template< int size > class IntegerArray

Download 124,09 Kb.