Friday, May 2, 2014

Reference pada bahasa pemograman C++

Reference digunakan untuk membuat alias atau nama lain (julukan) dari sebuah variabel. Sebagai contoh jika terdapat seseorang yang bernama bejo, maka kita dapat membuat alias atau julukan dari nama tersebut, misalnya alias joe. Oleh karena bejo dan joe sebenarnya adalah satu orang, maka apa yang dilakukan tehadap bejo, berarti itu juga terjadi pada joe.
Untuk membuat reference adalah dengan menggunakan tanda & dibelakang tipe data yang akan diacu. Berikut adalah bentuk umum dari pembuatan reference :
tipe_data& nama_alias = nama_variabel;

contoh program :

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
 int bejo; //mendeklarasikan variabel bejo
 
 //Membuat alias dari variabel bejo dengan nama joe
 int& joe = bejo;
 
 //Mengisikan nilai kedalam variabel bejo
 bejo = 15;
 
 //Menampilkan nilai  yang disimpan dalam variabel bejo dan joe
 cout<<"Nilai variabel bejo : "<<bejo<<endl;
 cout<<"Nilai variabel joe : "<<joe<<endl;
 
 //Mengisikana nilai kedalam variabel joe
 joe = 21;
 
 //Menampilkan nilai kembali yang disimpan dalam variabel bejo dan joe
 cout<<"Nilai variabel bejo : "<<bejo<<endl;
 cout<<"Nilai variabel joe : "<<joe<<endl;
 
 system("pause");
 return 0;
}
Hasilnya adalah sebagai berikut :

Alamat dari reference
Perlu diperhatikan bahwa sebuah alias dan variabel yang diacu tersebut menempati alamat  yang sama du memori, jadi keduanya bukanlah dua buah variabel yang berbeda, melainkan satu variabel yang mempunyai dua nama. Untuk membuktikannya, perhatikan contoh program berikut :

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
 int bejo; //mendeklarasikan variabel bejo
 
 //Membuat alias dari variabel bejo dengan nama joe
 int& joe = bejo;
 
 //Mengisikan nilai kedalam variabel bejo
 bejo = 15;
 
 //Menampilkan nilai  yang disimpan dalam variabel bejo dan joe
 cout<<"alamat variabel bejo : "<<&bejo<<endl;
 cout<<"alamat variabel joe : "<<&joe<<endl;
 
 system("pause");
 return 0;
}
Hasilnya adalah sebagai berikut :

Konstanta pada reference
Dalam C++, kita juga dapat mendefinisikan sebuah reference yang bersifat tetap (constan reference), artinya nilai dari reference ini tidak dapat diubah. Namun yang menjadi pertanyaannya adalah apakah kita masih dapat merubah nilai dari variabel yang diacu oleh reference tersebut, sedangkan reference tadi bersifat tetap?
Jawabannya adalah 'ya', Kita masih dapat memanipulasinya. Artinya yang menjadi konstan disini adalah hanya referencenya saja, sedangkan variabelnya tidak bersifat konstan.
Contoh program :

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
 int x = 7;
 
 const int& aliasX = x;
 
 x = 10; //Benar karena variabel x tidak bersifat konstan
 aliasX = 5; //Salah, karena reference aliasX bersifat konstan
 
 system("pause");
 return 0;
}