Object memiliki persamaan seperti deklarasi variabel biasa. Saat kita membuat object disaat itu juga kita sedang memesan memori kepada komputer sebesar total memori pada class yang digunakan. Object juga dimungkinkan untuk menggunakan pointer saat mendirikanya.
Object dengan pointer memiliki dua macam yaitu reference dan dereference, dibawah ini adalah bentuk penulisan dan penjelasan dari object pointer reference dan dereference.
Pointer Reference Pada Object
Bentuk umum penulisan
nama_class &nama_object = alias_object;
Contoh penulisan
siswa &refBudi = budi;
Di atas adalah bentuk umum penulisan dan contoh penulisan dari penggunaan pointer reference pada object. pointer reference berfungsi untuk membuat alias atau identitas lain untuk object yang di tunjuk. Dengan arti lain adalah satu alamat memori direpresentasikan menjadi 2 object.
Untuk mengakses member dari object dengan pointer reference kita membutuhkan Member Access Operator .
, dengan menaruh tanda .
di antara nama object dan nama member. Tidak memiliki perbedaan seperti kita melakukanya pada object biasa.
Pointer Dereference
Bentuk umum penulisan
nama_class *nama_object = &object_lain;
Contoh penulisan
siswa *pBudi = &budi;
pointer dereference digunakan untuk mengubah fungsi dari object yang dapat memiliki kemampuan untuk menunjuk ke alamat object lain. Yang memberikan kemungkinan kepada kita untuk mengakses data dari object yang di tunjuk.
Pada contoh penulisan pBudi
menunjuk ke pointer object budi
memiliki arti bahwa object pointer dapat mengakses memori yang dimiliki oleh object budi
.
Bukan hanya berfungsi untuk menunjuk ke memori yang dimiliki object lain, tapi kita juga dapat memesan atau alokasi memori pada memori heap sebesar total memori class yang digunakan dengan menggunakan keyword new
.
Cara Mengakses Member Melalui Pointer
Jika menggunakan pointer, untuk mengakses member pada object kita membutuhkan tanda Arrow Operator ->
di antara nama object dan nama member.
Bentuk umum penulisan
nama_object -> nama_member;
Contoh penulisan
pbudi -> noinduk = 123;
Contoh program
#include <iostream> using namespace std; class siswa{ public: int noInduk; void showInduk(){ cout<<"No Induk = "<<noInduk<<endl; } }; int main (){ siswa budi{1}; // Object Budi budi.showInduk(); //Member Access Operator siswa &refBudi = budi; //Pointer Reference refBudi refBudi.noInduk = 2; //Member Access Operator budi.showInduk(); siswa *pBudi = &budi; //pointer Dereference pBudi pBudi->noInduk = 3;//Arrow Operator budi.showInduk(); return 0; }
Contoh program 2
#include <iostream> using namespace std; class siswa{ public: int noInduk; void showInduk(){ cout<<"No Induk = "<<noInduk<<endl; } }; int main (){ siswa *budi = new siswa{1}; budi->noInduk = 2; budi->showInduk(); delete budi; return 0; }
Pada contoh program ke 1, dicontoh cara penggunaan dari object pointer yang menunjuk ke object lainnya dengan class yang sama, dan contoh program kedua dicontohkan dari penggunaan alokasi pointer pada object.