flag counter

Jumat, 29 Oktober 2010

konstruktor dan template

konstruktor adalah

1.Fungsi khusus yang namanya sama dengan nama class.
2.Digunakan untuk inisialisasi.
3.Dipanggil otomatis pertama kali saat instansiasi objek.
4.Tidak mengembalikan nilai.
5.Konstruktor dapat dioverloading.
berikut ini adalah contoh program yang menggunakan konstruktor.
#include
#include
using namespace std;
//template
class Kompleks{
friend class Operasi;
friend ostream& operator<>(istream&, Kompleks&);
public:
Kompleks(int s=0, int t=0):a(s),b(t){}
void cetak();
Kompleks operator-();
Kompleks operator-(const Kompleks&);
Kompleks operator+(const Kompleks&);
Kompleks operator*(const Kompleks&);
private:
int a;
int b;
};
//template
void Kompleks::cetak(){
if(b>0)cout<<”bilangan kompleks:”<<a<<”+”<<b<<”i”;
else cout<<”bilangan kompleks:”<<a<<b<<”i”;
cout<<endl;
}
// template
Kompleks Kompleks::operator-(){
Kompleks x;
x.a=a;
x.b=-b;
return x;
}
// template
Kompleks Kompleks::operator-(const Kompleks& m){
Kompleks x;
x.a=a-m.a;
x.b=b-m.b;
return x;
}
// template
Kompleks Kompleks::operator+(const Kompleks& m){
Kompleks x;
x.a=a+m.a;
x.b=b+m.b;
return x;
}
Kompleks Kompleks::operator*(const Kompleks&m)
{
Kompleks x;
x.a=a*m.a;
x.b=b*m.b;
return x;
}
// template
ostream& operator<<(ostream& out, const Kompleks& x){
if(x.b==0) out<<’['<<x.a<<']‘;
else if(x.a==0 && x.b==1)out<<’['<<"i"<<']‘;
else if(x.a==0 && x.b==-1)out<<’['<<"-i"<1)out<<’['<<x.b<<"i"<<']‘;
else if(x.a==0 && x.b<-1)out<<’['<<x.b<<"i"<<']‘;
else if(x.b==1)out<<’['<<x.a<<"+"<<"i"<0)out<<’['<<x.a<<"+"<<x.b<<"i"<<']‘;
else if(x.b==-1)out<<’['<<x.a<<"-i"<<']‘;
else out<<’['<<x.a<<x.b<<"i"<<']‘;
return out;
}
//template
istream& operator>>(istream& in, Kompleks&x)
{
cout<>x.a;
cout<>x.b;
return in;
}
//template
class Operasi{
public :
Kompleks jumlah(const Kompleks&,const Kompleks&);
Kompleks kali(const Kompleks&,const Kompleks&);
Kompleks kurang(const Kompleks&,const Kompleks&);
};
//template
Kompleks Operasi::jumlah(const Kompleks&m, const Kompleks&n)
{
Kompleks temp;
temp.a=m.a+n.a;
temp.b=m.b+n.b;
return temp;
}
//template
Kompleks Operasi::kurang(const Kompleks&m, const Kompleks&n)
{
Kompleks temp;
temp.a=m.a-n.a;
temp.b=m.b-n.b;
return temp;
}
//template
Kompleks Operasi::kali(const Kompleks&m, const Kompleks&n)
{
Kompleks temp;
temp.a=(m.a*n.a)-(m.b*n.b);
temp.b=(m.a*n.b)-(m.b*n.a);
return temp;
}
int main (){
Kompleks x(2,3),y(4,-4),t;
Operasi z;
cout<<”\nMenggunakan Cetak():\n”;
x.cetak();
cout<<”\nMenggunakan Overloading :”<<x;
cout<<”\nKonjugat :”<<-x<<endl;
y.cetak();
cout<<”\nPenjumlahan Menggunakan Method :”;
t=z.jumlah(x,y);
t.cetak();
cout<<”\nPenjumlahan Menggunakan Operator:”;
t=x+y;
cout<<x<<”+”<<y<<”=”<<t;
cout<<”\nPerkalian Menggunakan Methods:”;
t=z.kali(x,y);
t.cetak();
cout<<”\nPerkalian Menggunakan Operator:”;
t=x*y;
cout<<x<<”*”<<y<<”=”<<t;
t=x-y;
cout<<”\n”<<x<<”-”<<y<<”=”<<t<<endl;
cout<>n;
cout<<n;
system(“PAUSE”);
return EXIT_SUCCESS;
}

Tidak ada komentar:

Posting Komentar