Jun 13


Example : Simple Virtual Function.

Declared By :

Rizky a.k.a Reul, Mas Willy as Administrator of (http://forum.linux.or.id/) and link source code-nya lupa.

#include 

// using namespace std;

class BaseClass { // mendefinisikan class baru/INDUK yaitu BaseClass

public: // mendefinisikan bahwa public artinya bisa di akses oleh semua class

int i;

BaseClass(int x) {

i = x;

}

virtual void myFunction() /* mendefinisikan bahwa kita memakai VIRTUAL, artinya fungsi ini bisa di implementasikan ke class anak yaitu "DerivedClass1 dan DerivedClass2 */

{

cout << "Using BaseClass version of myFunction(): "; //menampilkan kata2 tsb

cout << i << '\n'; // menampilkan hasil dari i

}

};

class DerivedClass1 : public BaseClass { /* mendefiniskan bahwa class DerivedClass1 merupakan TURUNAN dari class BaseClass

*/

public: // mendefinisikan bahwa public artinya bisa di akses oleh semua class

DerivedClass1(int x) : BaseClass(x) {} /* artinya DerivedClass1 mengambil nilai x dari BaseClass dan telah di definisikan pula oleh BaseClass BaseClass(int x) { i = x; } */

void myFunction() // memanggil fungsi yaitu myFunction yang telah di definisikan VIRTUAL

{

cout << "Using DerivedClass1's version of myFunction(): "; //menampilkan kata2 tsb

cout << i*i << '\n'; // menampilkan hasil dari i

}

};

class DerivedClass2 : public BaseClass {

/* mendefiniskan bahwa class DerivedClass2 merupakan TURUNAN dari class BaseClass

*/

public: // mendefinisikan bahwa public artinya bisa di akses oleh semua class

DerivedClass2(int x) : BaseClass(x) {} /* artinya DerivedClass2 mengambil nilai x dari BaseClass dan telah di definisikan pula oleh BaseClass BaseClass(int x) { i = x; } */

void myFunction() // memanggil fungsi yaitu myFunction yang telah di definisikan VIRTUAL

{

cout << "Using DerivedClass2's version of myFunction(): "; //menampilkan kata2 tsb

cout << i+i << '\n'; //menampilkan hasil dari i

}

};

int main()

{

BaseClass *p; //mendefinisikan pointer *p sebagai BaseClass

BaseClass ob(10); //mengisi nilai BaseClass dengan nama ob menjadi 10

DerivedClass1 derivedObject1(10); // mengisi nilai DerivedClass1 dengan nama derivedObject1 menjadi 10 yang telah di definisikan dengan variable i */

DerivedClass2 derivedObject2(10); //Dan mengisi nilai DerivedClass2 dengan nama derivedObject2 menjadi 10 yang telah di definisikan dengan variable i */

p = &ob; // mendefinisikan bahwa pointer *p beralamatkan isi dari ob yaitu 10

p->myFunction(); // use BaseClass's myFunction()

/* memanggil fungsi BaseClass dengan nilai p=10

*/

p = &derivedObject1; // mendefinisikan bahwa pointer *p beralamatkan isi dari derivedObject1 yaitu 10

p->myFunction(); // use DerivedClass1's myFunction()

/* memanggil fungsi DerivedClass1 yang telah di definisikan oleh derivedObject1 dengan nilai p=10

*/

p = &derivedObject2; // mendefinisikan bahwa pointer *p beralamatkan isi dari derivedObject1 yaitu 10

p->myFunction(); // use DerivedClass2's myFunction()

/* memanggil fungsi DerivedClass2 yang telah di definisikan oleh derivedObject2 dengan nilai p=10

*/

return 0;

}

Notes for u :

=> Virtual berarti nanti bisa DITIMPA oleh class turunan.

=> C++ khan OOP, jadi kita bisa punya sebuah class yang nanti BISA DI TURUNKAN oleh class lain

=> nah kalo pada class INDUK kita definisikan virtual, maka class ANAK bisa menimpa implementasi

di class INDUK

=> PRIVATE hanya bisa diakses oleh class yang sama

=> kalo PUBLIC bisa diakses semua class

=> class DerivedClass1 : public BaseClass [ artinya mendefiniskan bahwa class DerivedClass1 merupakan turunan dari class BaseClass]

Was Written by:

Rizky a.k.a Reul

00.09am, Tuesday 10 June 2008.

<====[ Exploring Your iDea ]====>
www.m-r1zq.co.nr | www.thereullc.blogspot.com

Enjoy this Post!

Add to Mixx!

Random Posts




Leave a Reply