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
- Follow us on Twitter, or subscribe to the rizqtech RSS Feed for more daily web development and articles.
Enjoy this Post!

