3.123-listing class Dollars
{
private:
int m_dollars;
public:
Dollars(int dollars)
: m_dollars(dollars)
{
}
friend bool operator>(const Dollars &d1, const Dollars &d2)
{
return (d1.m_dollars > d2.m_dollars);
}
};
C++ endi Dollars obyektlarini oʻzgaruvchi sifatida ishlatganda a>b ifodasini qanday boshqarishni biladi.
Massiv elementlarining oʻrtacha arifmetik qiymatini hisoblaydigan funksiya uchun shablon yaratamiz (3.124-lis-ting).
3.124-listing template T average(T *array, int length)
{
T sum = 0;
for (int count=0; count < length; ++count)
sum += array[count];
sum /= length;
return sum;
}
Tekshirib koʻraylik (3.125-listing)
3.125-listing #include template T average(T *array, int length)
{
T sum = 0;
for (int count=0; count < length; ++count)
sum += array[count];
}
Natija:
4 6.8275 Yuqoridagi misolda (3.125-listingga qarang) asosiy ma’lumotlar turlari bilan hammasi muvaffaqiyatli ishlaydi.
Funksiya shablonining qaytish turi funksiyaga oʻtkazilgan massiv elementlarining turi bilan bir xil boʻlganligi sababli, butun son qiymatlarining oʻrtacha arifmetik qiymatini hisoblash butun natijaga olib keladi (har qanday kasr qismini olib tashlash bilan), xuddi double qiymatlarni hisoblash double tipli natijaga olib kelishi kabi. Bu aniq boʻlmasligi mumkin, shuning uchun buni izohlarda koʻrsatish yaxshi amaliyotdir.
Quyida Dollars sinfidagi obyektlar bilan average() funksiyasi chaqirilganda nima sodir boʻlishini koʻrib chiqamiz(3.126-listing).