Sunday 15 March 2015

Operators - Operator Overloading

Overloading adalah penggunaan beberapa metode atau properti dengan nama yang sama , tetapi memiliki daftar parameter / argumen yang berbeda . Perbedaan yang dimaksud adalah nomor yang berbeda dari parameter , tipe data yang berbeda , atau berbeda dari kedua ( jumlah parameter dan tipe data ) . Metode atau properti hanya berbeda nilai kembali ( return value ) tidak dapat dikatakan overloading .

Contoh:

#include <cstdlib>
#include <iostream>

using namespace std;

class Bilangan{

friend ostream& operator<<(ostream&, const Bilangan&);

friend istream& operator>>(istream&, Bilangan&);

public :

Bilangan(int a0=0, float b0=0.0) : a(a0), b(b0) { }

void banding_int(const Bilangan&, const Bilangan&);

Bilangan& operator=(const Bilangan&);

Bilangan operator+(const Bilangan&) const;

Bilangan operator-()const;

private:

int a;

float b;

};

ostream& operator<<(ostream& out, const Bilangan& x){

out << “Bagian integer : ” << x.a << endl;

out << “Bagian float : ” << x.b << endl;

return out;

}
void Bilangan::banding_int(const Bilangan& x, const Bilangan& y)
{

if (x.a > y.a) cout << x.a << “::x lebih besar dari ” << y.a << “::y”;

else cout << x.a << “::x lebih kecil dari ” << y.a << “::y”;

}
Bilangan& Bilangan::operator=(const Bilangan& x)

{ a = x.a;

b = x.b;

return *this;

}
istream& operator>>(istream& in, Bilangan& x)

{

cout <<”\nMasukkan bagian integer : “;

in >> x.a;

cout <<”Masukkan bagian float : “;

in >> x.b;

return in;

}
Bilangan Bilangan::operator+(const Bilangan& x) const

{ Bilangan cc;

cc.a = a + x.a;

cc.b = b + x.b;

return cc;

}
Bilangan Bilangan::operator-() const

{ Bilangan x;

x.a = -a;

x.b = -b;

return x;

}

int main(int argc, char *argv[])

{

Bilangan s, t(-2,3.14), d;

cout << “Nilai awal s\n” << s;

cout << “Nilai awal t dari deklarasi\n” << t;

s = t;

cout << “Setelah s di-assign t\n”;

cout << “Nilai s\n” << s;

cout << “Masukkan nilai-nilai objek d”;

cin >> d;

cout << “Setelah d + t => \n” << d+t;

cout << “Nilai d dinegatifkan\n” << -d;

system(“PAUSE”);

return EXIT_SUCCESS;

}

No comments:

Post a Comment