16-ma’ruza. Obyektga yo’naltirilgan dasturlashda parametrlash. Amallarni qayta yuklash. Funksiya shablonlari va ulardan foydalanish


Operatorlar, funksiya chaqiruvlari va funksiya shablonlari



Yüklə 103,92 Kb.
səhifə4/7
tarix14.03.2023
ölçüsü103,92 Kb.
#87765
1   2   3   4   5   6   7
Operatorlar, funksiya chaqiruvlari va funksiya shablonlari. Funksiya shablonlari asosiy ma’lumotlar turlari (char, int, double va boshqalar) bilan ham, sinflar bilan ham ishlaydi (lekin nyuans mavjud). Shablon nusxasi oddiy funksiya kabi tuzilgan. Oddiy funksiyada ushbu funksiyada ishlatiladigan har qanday operatorlar yoki boshqa funksiyalarga murojaatlar aniqlangan/qayta yuklangan boʻlishi kerak, aks holda kompilyatsiya xatosi olinadi. Xuddi shunday, funksiya shablonida mavjud boʻlgan har qanday bayonotlar yoki boshqa funksiyalarga murojaatlar faktik (joʻnatiladigan) ma’lumotlar turlari bilan ishlash uchun aniqlanishi / qayta yuklanishi kerak. Bu holatni amalda koʻrib chiqamiz (3.121-listing).
3.121-listing
class Dollars
{
private:
int m_dollars;
public:
Dollars(int dollars)
{
m_dollars = dollars;
}
};
Dollars sinfidagi obyektlar bilan max() funksiyasini chaqirishga harakat qilinganda nima sodir boʻlishini koʻrib chiqamiz (3.122-listing).
3.122-listing
template
const T& max(const T& a, const T& b)
{
return (a > b) ? a : b;
}

class Dollars


{
private:
int m_dollars;
public:
Dollars(int dollars)
{
m_dollars = dollars;
}
};

int main()


{
Dollars seven(7);
Dollars twelve(12);

Dollars bigger = max(seven, twelve);


return 0;


}

C++ tili max() funksiya shablonining quyidagi nusxasini yaratadi:


const Dollars& max(const Dollars &a, const Dollars &b)
{
return (a > b) ? a : b;
}
Kompilyator ushbu funksiyani kompilyatsiya qilishga harakat qiladi, lekin u ishlamaydi, chunki C++ a> b ifodasini qanday boshqarishni bilmaydi. Shunday qilib, quyidagi xato paydo boʻladi:
Ошибка C2676 бинарный ">": "const T" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору1
Xato xabari Dollars sinfi uchun > operatorini qayta yuklanmaganini koʻrsatadi. Funksiya qayta yuklangan variantni qaraymiz (3.123-listing).

Yüklə 103,92 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin