#include <iostream>
#include <ctime>
using namespace std;
//
// Templateler elbetteki sadece tek bir parametreye sahip olmak zorunda degiller.
// Hatta typename disinda baska tiplerde parametrelerde alabilirler. Ornegin dizi genisligini
// 5 ile sinirlamak yerine int tipinde bir template parametresi ile belirleyerek sinifi daha da
// genellestirebiliriz. Hatta mean() fonksiyonumuzun donus degerini de ikinci bir typename parametresi
// ile belirleyebiliriz.
// Hadi yapalim :P
template <typename T1, typename T2, int SIZE>
class ReallyCoolWow
{
public:
T1 numbers[SIZE]; // T1 dizinin tutatacagi verilerin tipini belirliyor
// SIZE ise dizinin genisligini
T2 mean() // T2 ortalama alan fonksiyonumuzun donus tipini belirliyor
{
float sum = 0;
for (int i = 0; i < SIZE; i++)
sum+= numbers[i];
return sum / SIZE;
}
};
// Tam anlamiyla genel amacli bir "ortalama alim" sinifi diyebiliriz :)
// Kullanim
int main()
{
ReallyCoolWow<float, double, 100> r;
// r.numbers dizisi 100 adet float saklar
// r.mean() double bir deger dondurur
srand(time(0));
for (int i = 0; i < 100; i++)
r.numbers[i] = (float)rand();
cout << "Mean of 100 random numbers --> " << r.mean() << endl;
return 0;
}
Do weird and difficult things.
|