Mavzu: Bir o’lchovli massivlarni funksiya parametri sifatida qo’llanilishi


Download 113.77 Kb.
bet3/9
Sana31.01.2024
Hajmi113.77 Kb.
#1831301
1   2   3   4   5   6   7   8   9
Bog'liq
Документ (1)

template <class Num>
Num sqr(Num x)
{
return x * x;
}
Tempet Temolie Vazifa yoki turdagi "bo'sh" ni ishga tushirish bilan tanishtiradi. Aslida, shablon uning barcha parametrlarining haqiqiy qiymatlari o'rnatilgunga qadar funktsiya yoki turi emas. Andoza parametrlarini almashtirish uchun ularni "burchak qavslari" ga ("kamroq" belgilariga ("kamroq" belgilariga olib boradigan va "kamroq" belgilariga olib borishi kerak. .
Ushbu lahzada kompilyator shablon parametrlarining ismlari o'rniga funktsiyaning parametrlarining ismlari o'rniga funktsiyaning parametrlari yoki o'ziga xos funktsiya yoki sinfning o'ziga xos amalga oshirilishini bildiradi, deb taxmin qilish mumkin.
auto a = sqr(10); // Num = int
// a имеет тип int и значение 100
auto f = sqr(2.5f); // Num = float
// f имеет тип float и значение 6.25f
Funktsiya funktsiyasining parametrlari funktsiyaning o'zi parametrlaridan olinishi mumkin bo'lsa, ular ko'rsatilishi mumkin emas:
auto a = sqr(10); // 10 имеет тип int, поэтому Num = int
// a имеет тип int и значение 100
auto f = sqr(2.5f); // 2.5f имеет тип float, поэтому Num = float
// f имеет тип float и значение 6.25f
Funktsiya funktsiyasining parametrlari funktsiyaning o'zi parametrlaridan olinishi mumkin bo'lsa, ular ko'rsatilishi mumkin emas:
template <class First, class Second = First>
struct Pair // Пара значений типов First и Second.
{
First first;
Second second;

// Конструктор: First() и Second() -- вызовы конструкторов по умолчанию


// для типов First и Second соответственно (определены и для встроенных типов).
Pair(const First &first = First(), const Second &second = Second())
: first(first), second(second) /* список инициализации:
вызов конструкторов копирования для обоих полей */
{}
};
// Пара чисел с плавающей точкой.
Pair p2(1, 2); // First = double, Second = First = double
assert(p2.first == 1. && p2.second == 2.);

// Пара "целое, строка".


Pair ids; // First = size_t, Second = string;
ids.first = 23;
ids.second = "23 is the new 42";
Vazifalar va sinflar shablonlariga qo'shimcha ravishda C ++ (C ++ 11 bilan boshlanadi), u Sinonyams shablonlari shablonlarini e'lon qilish imkoniyatini beradi. Kerakli parametrlarni belgilash qobiliyati bilan bir-sharam uchun qisqa ism yozing.


Download 113.77 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling