#include <iostream>
using namespace std;
class B
{
public:
void Tampil()
{
cout<<"Apakah Anda akan belajar C++?"<<endl;
}
}; //akhir dari kelas B
class D : public B
{
public :
void Tampil()
{
cout<<"Saya juga belajar C++"<<endl;
}
}; //akhir dari kelas D
int main()
{
B b; //b adalah sebuah objek dari kelas basis B
D d; //d adalah sebuah objek dari kelas terderivasi D
B *bptr; //pointer ke kelas B
bptr = &(B)b; //inisialisasi pointer ke objek dari kelas B
bptr -> Tampil(); //fungsi Tampil() dipanggil dengan pointer
bptr = & d; //pointer ditugasi alamat dari d.
bptr -> Tampil(); //pointer dipakai untuk memanggil fungsi
return 0;
}
===========================================
#include <iostream>
using namespace std;
class B
{
public:
void Tampil()
{
cout<<"Apakah Anda akan belajar C++?"<<endl;
}
}; //akhir dari kelas B
class D : public B
{
public :
void Tampil()
{
cout<<"Saya juga belajar C++"<<endl;
}
}; //akhir dari kelas D
int main()
{
B b; //b dideklarasikan sebagai objek dari kelas B
D d; //d dideklarasikan sebagai objek dari kelas D
D *dptr = &(D)d; //pointer ke kelas D
dptr -> Tampil();
dptr = & b; //dptr ditugasi alamat dari kelas basis
//ini akan menghasilkan error
dptr -> Tampil();
return 0;
}
====================================
#include <iostream>
using namespace std;
class B
{
public:
void Tampil()
{
cout<<"Apakah Anda akan belajar C++?"<<endl;
}
}; //akhir dari kelas B
class D : public B
{
public :
void Tampil()
{
cout<<"Saya juga belajar C++"<<endl;
}
}; //akhir dari kelas D
int main()
{
B b; //b dideklarasikan sebagai objek dari kelas B
D d; //d dideklarasikan sebagai objek dari kelas D
B *bptr = & (B) b ; //pointer ke kelas B
D *dptr = &(D) d ; // pointer ke kelas D
bptr -> Tampil();
dptr -> Tampil();
return 0;
}
=======================================
#include <iostream>
using namespace std;
class B
{
public:
virtual void Tampil()
{
cout<<"Apakah Anda akan belajar C++?"<<endl;
}
}; //akhir dari kelas B
class D : public B
{
public :
void Tampil()
{
cout<<"Saya juga belajar C++"<<endl;
}
}; //akhir dari kelas D
int main()
{
B b; //b dideklarasikan sebagai objek dari kelas B
D d; //d dideklarasikan sebagai objek dari kelas D
B *bptr = &(B) b ; //pointer kelas basis
bptr -> Tampil(); //statemen untuk memanggil fungsi kelas basis
bptr = & d; //pointer kelas basis ditugasi alamat dari objek terderivasi d
bptr -> Tampil(); //memanggil fungsi Tampil() dari kelas terderivasi
return 0;
}
=======================================
#include <iostream>
using namespace std;
class B
{
public:
virtual void Tampil()
{
cout<<"Tampil dari kelas B dipanggil"<<endl;
}
}; //akhir dari kelas B
class D1 : public B
{
public:
void Tampil()
{
cout<<"Tampil dari kelas D1 dipanggil"<<endl;
}
} ; //akhir dari kelas D1
class D2 : public B
{
public :
void Tampil ()
{
cout<<"Tampil dari kelas D2 dipanggil"<<endl;
}
}; //akhir dari kelas D2
int main ()
{
B b; //b adalah sebuah objek dari kelas B
B *bptr = &b; //pointer kelas basis
D1 d1; //d1 dan d2 adalah objek dari kelas D1
D2 d2; //dan kelas D2
bptr ->Tampil();
bptr = &d1; //pointer kelas basis ditugasi alamat
//dari objek kelas terderivasi
bptr -> Tampil();
bptr = &d2;
bptr ->Tampil() ;
return 0 ;
}
==========================================
#include <iostream>
using namespace std;
class B
{
public:
virtual void Tampil()
{
cout<<"Tampil dari kelas B dipanggil"<<endl;
}
}; //akhir dari kelas B
class D1 : public B
{
public:
void Tampil()
{
cout<<"Tampil dari kelas D1 dipanggil"<<endl;
}
} ; //akhir dari kelas D1
class D2 : public B
{
public :
void Tampil()
{
cout<<"Tampil dari kelas D2 dipanggil"<<endl;
}
}; //akhir dari kelas D2
class D3 : public B
{
public :
void Tampil()
{
cout<<"Tampil dari kelas D3 dipanggil"<<endl;
}
}; //akhir dari kelas D3
int main ()
{
B b;
D1 d1;
D2 d2;
D3 d3;
B *bptr[] = {&b , &d1, &d2, &d3}; //Array yang memuat pointer-pointer kelas B
for (int i = 0; i<4; i++)
bptr[i] ->Tampil();
return 0 ;
}
=======================================
#include <iostream>
using namespace std;
class B
{
public :
virtual void Tampil() = 0;
} ; //akhir dari kelas B
class D1 : public B // Derived class
{
public :
void Tampil(){ cout <<"Tampil() dari kelas D1 dipangil"<<endl;}
};
int main()
{
B b ; //objek b dari kelas B dideklarasikan yang menghasilkan error
B *bptr = &b;
bptr -> Tampil();
return 0 ;
}
=========================================
#include <iostream>
using namespace std;
class BangunBiasa {
int sisi; //private secara default
public:
void set_sisi(int a)
{
sisi = a;
}
int get_sisi()
{
return sisi;
}
virtual double Luas (void) =0;
}; //akhir dari kelas BangunBiasa
class Lingkaran : public BangunBiasa
{
public:
double Luas (void)
{
return (3.14159*get_sisi()*get_sisi()/4);
}
}; //akhir dari kelas Lingkaran
class Persegi : public BangunBiasa
{
public:
double Luas (void)
{
return (get_sisi()*get_sisi());
}
}; //akhir dari kelas Persegi
int main ()
{
double A1, A2;
Persegi S1;
Lingkaran C1;
BangunBiasa* RS1 = & S1;
BangunBiasa* RS2 = & C1;
(*RS1).set_sisi(10);
RS2 -> set_sisi(10);
A1 = (*RS1).Luas(); //(*RS1).Luas() dan RS1 ->Luas() ekivalen
A2 = RS2 -> Luas ();
cout<<"A1 = "<<A1<<"\t A2 = "<<A2<<endl;
return 0;
}
===========================================
#include <iostream>
using namespace std;
class B
{
protected:
int bx;
public :
B() {} //konstruktor kosong dari kelas basis
B(int m)
{
bx = m ; //konstruktor dari kelas basis
cout<<"Konstruktor dari kelas B dipanggil"<<endl;
}
virtual int Perkalian()
{
return 2*bx;
}
//fungsi destruktor tidak dideklarasikan virtual
~ B()
{
cout<<"Destruktor dari kelas B dipanggil"<<endl;
}
}; //akhir dari kelas B
class D1
{
protected :
int D1x ;
public :
D1 () {} //konstruktor kosong (default) dari D1
D1(int n)
{
D1x = n; // constructor of class D1
cout<<"Konstruktor dari D1 dipanggil"<<endl;
}
int getD1x()
{
return D1x;
}
~D1()
{
cout<<"Destruktor dari D1 dipanggil"<<endl;
}
};
class D2
{
protected :
int D2x ;
public :
D2(){}
D2(int p)
{
D2x = p ;
cout <<"Konstruktor dari D2 dipanggil"<<endl;
}
int getD2x()
{
return D2x;
}
~D2()
{
cout <<"Destruktor dari D2 dipanggil"<<endl;
}
};
class D3 : public B
{
int D3x; // private secara default
public :
D3() {}
D1 d1; //d1 dideklarasikan sebagai objek dari kelas D1
D2 d2; //d2 dideklarasikan sebagai objek dari kelas D2
D3( int p, int q , int r, int s): B(p), d1(q), d2(r)
{
D3x = s;
cout<<"Konstruktor dari D3 dipanggil"<< endl;
}
int Perkalian()
{
return D3x * d2.getD2x() * d1.getD1x() * bx;
}
~D3()
{
cout<<"Destruktor dari D3 dipanggil"<<endl;
}
};
int main ()
{
B *Bp ;
Bp = new B(10); //objek dinamis yang diciptakan dengan operator new
cout<<"Perkalian dari B = "<<Bp ->Perkalian()<<endl;
Bp = new D3(2, 3, 4, 5);
cout<<"Perkalian = "<<Bp -> Perkalian()<<endl;
delete Bp; //penghapusan pointer kelas basis
return 0 ;
}
===============================================
#include <iostream>
using namespace std;
class B
{
protected:
int bx;
public :
B() {} //konstruktor kosong dari kelas basis
B(int m)
{
bx = m ; //konstruktor dari kelas basis
cout<<"Konstruktor dari kelas B dipanggil"<<endl;
}
virtual int Perkalian()
{
return 2*bx;
}
//fungsi destruktor tidak dideklarasikan virtual
virtual ~B()
{
cout<<"Destruktor dari kelas B dipanggil"<<endl;
}
}; //akhir dari kelas B
class D1
{
protected :
int D1x ;
public :
D1 () {} //konstruktor kosong (default) dari D1
D1(int n)
{
D1x = n; // constructor of class D1
cout<<"Konstruktor dari D1 dipanggil"<<endl;
}
int getD1x()
{
return D1x;
}
~D1()
{
cout<<"Destruktor dari D1 dipanggil"<<endl;
}
};
class D2
{
protected :
int D2x ;
public :
D2(){}
D2(int p)
{
D2x = p ;
cout <<"Konstruktor dari D2 dipanggil"<<endl;
}
int getD2x()
{
return D2x;
}
~D2()
{
cout <<"Destruktor dari D2 dipanggil"<<endl;
}
};
class D3 : public B
{
int D3x; // private secara default
public :
D3() {}
D1 d1; //d1 dideklarasikan sebagai objek dari kelas D1
D2 d2; //d2 dideklarasikan sebagai objek dari kelas D2
D3(int p, int q , int r, int s): B(p), d1(q), d2(r)
{
D3x = s;
cout<<"Konstruktor dari D3 dipanggil"<< endl;
}
int Perkalian()
{
return D3x * d2.getD2x() * d1.getD1x() * bx;
}
~D3()
{
cout<<"Destruktor dari D3 dipanggil"<<endl;
}
};
int main ()
{
B *Bp ;
Bp = new B(10); //objek dinamis yang diciptakan dengan operator new
cout<<"Perkalian dari B = "<<Bp ->Perkalian()<<endl;
Bp = new D3(2, 3, 4, 5);
cout<<"Perkalian = "<<Bp -> Perkalian()<<endl;
delete Bp; //penghapusan pointer kelas basis
return 0 ;
}
Tidak ada komentar:
Posting Komentar