Newbie @ C++ Language eps 14
June 13, 2008
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 <iostream.h>
// 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
