Sabtu, 17 April 2010

Cpp template

#include
#include

/*----------------------------------*/
/*template fungsi/prosedur satu tipe*/

template void tulisMasukan(Masukan n){
std::cout << "tulisMasukan dengan masukan : " << n << "\n";
}

/*---------------------------------*/
/*template fungsi/prosedur dua tipe*/

template
A keluaran(A n, B m){
std::cout << "fungsi keluaran dengan nilai n : " << n << "\n";
return n;
}

/*----------------------------------*/
/*overloading template*/

template
T keluaranO(T n){
std::cout << "fungsi keluaranO dengan nilai n : " << n << "\n";
return n;
}

template
T keluaranO(T x, T y){
std::cout << "fungsi keluaranO dengan nilai x * y : " << (x * y) << "\n";
return (x * y);
}

/*----------------------------------*/
/*template untuk kelas*/

template
class Titik{

private:
int x; // koordinat x
int y; // koordinat y

public:
Titik();
Titik(int xp, int yp);
int getX();
void setX(int xp);
int getY();
void setY(int yp);
~Titik();
};

template
Titik::Titik(){
/*konstruktor*/
Titik::x = 0;
Titik::y = 0;
}

template
Titik::Titik(int xp, int yp){
/*konstruktor*/
Titik::x = xp;
Titik::y = yp;
}

template
int Titik::getX(){
/*mengembalikan nilai x*/
return Titik::x;
}

template
void Titik::setX(int xp){
/*mengeset nilai x*/
Titik::x = xp;
}

template
int Titik::getY(){
/*mengembalikan nilai y*/
return Titik::y;
}

template
void Titik::setY(int yp){
/*mengeset nilai y*/
return Titik::y = yp;
}

template
Titik::~Titik(){
}

template
class Tulis{

public:
Tulis(T kata){
/*konstruktor*/
std::cout << "isi kata masukan : " << kata << "\n";
}
};

/*--------------------------------*/

int main(){

Titik t1(28, 1);
char *kata = "bab 21 membahas template";

tulisMasukan(18);
tulisMasukan(28.11);
tulisMasukan("prosedur tulisMasukan dengan masukan string");

keluaran(11, 11.82);
keluaran(9, 'A');
keluaran(9.81, 'A');

keluaranO('A');
keluaranO(81);
keluaranO(82.81);
keluaranO(3, 5);
keluaranO(18.9, 28.11);

std::cout << "t1 : x : " << t1.getX() << " y : " << t1.getY() << "\n";
Tulis t(kata);

return 0;

}