Pengertian Pass by Reference

Written by: Fajar   |   Updated on: Februari 26, 2018
Pengertian Pass by Reference

Pengertian Pass by Reference

Pass by Reference adalah salah satu metode pemberian argument kepada function parameter saat pemanggilan function, dengan memanfaatkan reference pada function parameter.

Pada pembuatan function parameter kita dimungkinkan untuk menggunakan reference. metode ini tidak jauh beda dengan pass by value, keduanya merupakan metode yang memberikan argument kepada parameter. Tapi hal yang berbeda di sini adalah bagaimana function parameter menerima argument tersebut.

Contoh Penulisan :

//parameter
void myFunction (int &a,int &b){
}
//pemanggilan
myfunction (argument1,argument2);

pada pass by value kita mengetahuhi sifat dari metode pass by value, yaitu ketika kita memberikan argument kepada function parameter, yang CPU lakukan adalah nilai dari variabel argument akan disalin kepada variabel function paremeter, keduanya akan berdiri sendiri sebagai variabel.

jadi ketka nterjad perubahan nilai pada function parameter tidak akan mempengaruhi argument, Nilai pada argument akan selalu aman saat function tersebut sedang berjalan.

Contoh Program :

#include <iostream>
using namespace std;

void myF(int x);//function prototype

int main(){
    int a=1;

    cout<<"a = "<<a<<endl;
    myF(a);
    cout<<"a = "<<a<<endl;

    return 0;
}

void myF(int x){
    x++;
    cout<<"x = "<<x<<endl;
}

tapi hal itu akan berbeda jika kita menggunakan reference pada function parameter. Reference pada function parameter masih memiliki fungsi yang sama seperti kita menggunakanya pada variabel biasa. Apa yang terjadi pada argument adalah cpu akan membuat function parameter sebagai referensi dari argument, atau dengan arti lain bahwa function parameter akan menjadi alias / variabel dari memori argument yang deberikan.

Jadi function parameter akan menjadi argument tersebut dengan identitas berbeda, apapun yang terjadi pada nilai function parameter maka akan berpengaruh kepada argument tersebut. hal itu terjadi karena function parameter dan argument memiliki satu memori yang sama.

Baca :   Penjelasan Constructor

Contoh program :

#include <iostream>
using namespace std;

void myF(int &x);

int main(){
    int a=1;

    cout<<"a = "<<a<<endl;
    myF(a);
    cout<<"a = "<<a<<endl;

    return 0;
}

void myF(int &x){
    x++;
    cout<<"x = "<<x<<endl;
}

Untuk membuktikan hal tersebut, kalian bisa melihat pada contoh program di atas. Semua perubahan nilai pada function parameter &x dari function kustom myF() akan berpengaruh juga pada argument a pada function utama int main().

Fungsi dari metode ini biasanya digunakan untuk mengembalikan nilai. saat kita mengoperasikan sebuah function kustom, terkadang kita menginginkan function kustom tersebut dapat mengembalikan nilai yang lebih dari satu. Kadang ini tidak dimungkinkan jika kita menggunakan keyword return.

Dan metode ini bisa kita gunakan untuk mengatasi permasalahan tersebut. kita dapat membuat function kustom yang dapat mengembalikan nilai lebih dari satu. Nilai yang dikembalikan tidak perlu menjadi RValue tapi akan langsung diberikan kebada argument.

Contoh program :

#include <iostream>
using namespace std;

void naik_turun(int &penaikan, int &penurunan, int nilai, int jumlah);//function prototype

int main(){
    int hasilNaik=0, hasilTurun=0, nilai=10;

    naik_turun(hasilNaik, hasilTurun, nilai, 3);
    cout<<"hasilNaik = "<<hasilNaik<<endl;
    cout<<"hasilTurun = "<<hasilTurun<<endl;

    return 0;
}

void naik_turun(int &penaikan, int &penurunan, int nilai, int jumlah){
    penaikan = nilai + jumlah;
    penurunan = nilai - jumlah;
}

Bukan hanya itu saja keuntungan dalam menggunakan metode ini. Metode pass by reference juga dapat meningkatkan performa program anda, khususnya saat kita mencoba untuk memberikan variabel yang cukup besar seperti array, object dan lain-lain.

jika kalian ingin menggunakan pass by reference untuk menambahkan performa program anda tapi tidak ingin nilai dari argument dapat di ubah anda dapat mendambahkan fitur konstanta pada function parameter, dengan itu nilai dari argumen akan tetap aman.


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *