Kembalikan Referensi di C++

Kembalikan Referensi Di C



C++ menyediakan fasilitas untuk mengembalikan nilai atau alamat dengan referensinya, bukan dengan pointer. Menggunakan referensi alih-alih pointer dapat membuat program C++ lebih mudah dibaca dan dikelola. Dalam C++, referensi dan pointer berkaitan erat satu sama lain. Perbedaan utamanya adalah meskipun referensi hanyalah nama alternatif, “alias” untuk variabel lain, pointer dapat digunakan dalam operasi seperti penambahan nilai. Referensi adalah nama alternatif atau duplikat dari nilai asli dan dilambangkan dengan simbol “&”.

Contoh 1:

Kami mengimpor file header “iostream” dan kemudian menggunakan namespace “std”. File header diimpor dalam kode C++ karena banyak fungsi yang ditentukan. Kemudian, kita membuat fungsi referensi pengembalian dengan menempatkan simbol “&” dengan nama fungsi, “returnTheValue”.







Di sini, referensi “nilai” sekarang dimasukkan. Di bawahnya, kami mencetak nilai dan alamat dengan referensi “&nilai”. Kemudian, kita menempatkan referensi pengembalian dan menempatkan “nilai”. Sekarang, “main()” dipanggil di sini, dan kita menginisialisasi “n1” dengan nilai “44”. Di bawahnya, “int& n2” diinisialisasi dengan “returnTheValue(n1)”. Sekarang, kami mencetak nilai “n1” serta alamatnya. Kemudian kita mencetak nilai “n2” serta alamat “n2” dengan menggunakan “cout”.



Kode 1:



#termasuk
menggunakan namespace std;
ke dalam & kembalikan Nilainya ( ke dalam & nilai )
{
cout << 'Nilai =' << nilai << akhir
<< 'Alamat nilainya adalah'
<< & nilai << akhir;
kembali nilai;
}
ke utama ( )
{
kamu n1 = 44 ;
ke dalam & n2 = mengembalikanNilai ( n1 ) ;
cout << 'n1 = ' << n1 << akhir
<< 'Alamat n1 adalah'
<< & n1 << akhir;
cout << 'n2 = ' << n2 << akhir
<< 'Alamat n2 adalah'
<< & n2 << akhir;
kembali 0 ;
}


Keluaran:





Di sini, kita dapat mencatat bahwa referensi hanyalah nama alternatif dari variabel lain seperti yang ditunjukkan berikut ini. Sebagai alamat nilai, “n1” dan “n2” tidak pernah berubah.



Contoh 2:

Kami menggunakan namespace “std” setelah mengimpor file header “iostream”. Selanjutnya, kita menggunakan nama fungsi “MyReturnValueFunc” dan simbol “&” untuk membuat fungsi referensi pengembalian. Referensi ke variabel “v1” ditempatkan di sini. Kami mencetak nilai dan alamat dengan referensi “&v1” di bawahnya. Selanjutnya kita masukkan “return reference” dengan memanfaatkan “return” dan “v1” pada lokasi ini. Di sini, “main()” dipanggil, dan “num_1” diinisialisasi dengan nilai “19”. Inisialisasi “int& num_2” dilakukan dengan “MyReturnValueFunc(num_1)”.

Saat ini, kami mencetak nilai dan alamat “num_1” dan, menggunakan “cout”, kami mencetak nilai dan alamat “num_2”. Kami sekarang mengubah nilai “num_1” dengan memanfaatkan alamat yang dikembalikan di sini oleh “MyReturnValueFunc”. Fungsi ini mengembalikan nama alternatif “v1” yang juga merupakan nama alternatif “num_1”. Jadi, kami mengubah nilainya dan menyetelnya ke “91”. Kami menetapkan “91” ke “MyReturnValueFunc(num_1)” yang bertindak sebagai alias di sini. Kemudian kita print lagi value dan alamat “num_1”.

Kode 2:

#termasuk
menggunakan namespace std;
ke dalam & MyReturnValueFunc ( ke dalam & v1 )
{
cout << 'Nilai v1 = ' << v1 << akhir
<< ' Alamat variabel v1 adalah '
<< & v1 << akhir;
kembali v1;
}
ke utama ( )
{
int angka_1 = 19 ;
ke dalam & num_2 = MyReturnValueFunc ( nomor_1 ) ;
cout << 'Nilai angka_1 = ' << nomor_1 << akhir
<< 'Alamat nomor_1 adalah'
<< & nomor_1 << akhir;
cout << 'Nilai angka_2 = ' << nomor_2 << akhir
<< 'Alamat nomor_2 adalah'
<< & nomor_2 << akhir;
MyReturnValueFunc ( nomor_1 ) = 91 ;
cout << 'Sekarang, nilai num_1 = ' << nomor_1 << akhir
<< 'Alamat nomor_1 adalah'
<< & nomor_1 << akhir;
kembali 0 ;
}


Keluaran:

Seperti yang ditunjukkan berikut ini, kita dapat melihat bahwa referensi hanyalah nama alternatif untuk variabel lain karena alamat nilai “v1”, “num_1”, dan “num_2” tetap konstan:

Contoh 3:

File header “iostream” diimpor dan namespace “std” digunakan. Karena banyak fungsi ditentukan dalam file header, kami mengimpornya ke dalam kode C++. Di sini, kita membuat fungsi “ReturnRefFun()” di mana kita menempatkan “int& my_ref” yang mengembalikan referensi. “int& ReturnRefFun” dideklarasikan di sini sebagai fungsi referensi. Setelah ini, kita menaikkan nilai variabel “my_ref”. Di bawahnya, kami menempatkan “return” yang mengembalikan referensi “my_ref”.

Setelah ini, metode “main()” dipanggil di sini. Kemudian, kita menginisialisasi variabel “first_value” dengan “21”. Di bawahnya, kita mengembalikan salinan referensi dengan menempatkan “first_value” di fungsi “ReturnRefFun” dan menyimpannya di variabel “copied_value”. Kemudian, kami mencetak “nilai_pertama” dan “nilai_yang disalin” dengan memanfaatkan “cout”. Di bawahnya, kita menambah variabel “copied_value” dengan menempatkan “copied_value++”. Kemudian, kita mencetak “nilai_salinan” setelah menambahkannya dan “nilai_pertama” menggunakan “cout”. Setelah ini, kita mengembalikan referensi dengan bantuan menginisialisasi variabel “int& ref_value” dengan “ReturnRefFun(first_value)”.

Setelah ini, kami mencetak nilai variabel “my_ref” yang kami salin. Kemudian, kita mencetak nilai variabel “first_value”. Di bawahnya, kita menambah nilai “ref_value” dengan meletakkan “ref_value++”. Di bawahnya, kami mencetak nilai kenaikan “ref_value” dan juga variabel “first_value” dengan bantuan “cout”. Ketika “ref_value” diubah, “first_value” juga akan berubah.

Kode 3:

#termasuk
menggunakan namespace std;
ke dalam & KembaliRefFun ( ke dalam & referensi_saya ) {
my_ref++;
kembali referensi_saya;
}
ke utama ( ) {
ke dalam nilai_pertama = dua puluh satu ;
ke dalam nilai_salinan =KembaliRefFun ( nilai_pertama ) ;
cout << 'Nilai pertama adalah:' << nilai_pertama << akhir;
cout << 'Nilai yang disalin adalah:' << nilai_salinan << akhir;
disalin_nilai++;
cout << 'Nilai_yang disalin bertambah:' << nilai_salinan << akhir;
cout << 'Nilai pertama :' << nilai_pertama << akhir;
ke dalam & nilai_ref =KembaliRefFun ( nilai_pertama ) ;
cout << 'Nilai yang disalin referensi:' << nilai_ref << akhir;
cout << 'Nilai pertama :' << nilai_pertama << akhir;
ref_value++;
cout << 'Nilai referensi bertambah:' << nilai_ref << akhir;
cout << 'Nilai pertama :' << nilai_pertama << akhir;
kembali 0 ;
}


Keluaran:

Berikut adalah hasil dari kode sebelumnya di mana kita menggunakan teknik “referensi pengembalian”. Contoh ini menunjukkan perbedaan antara mengembalikan duplikat variabel referensi dan mengembalikan variabel referensi itu sendiri.

Contoh 4:

Di sini, “int& rByRef” dideklarasikan sebagai fungsi referensi yang mengembalikan variabel referensi. Kami meneruskan “int& data” ke fungsi “int& rByref()” ini. Di sini, kami mencetak alamat variabel “data” dan kemudian menggunakan referensi pengembalian di bawah ini. Sekarang, kita menginisialisasi variabel “x_var” setelah memanggil metode “main()”. Kemudian kita print alamat “x_var” disini dengan meletakkan “&x_var” di “cout”.

Di bawahnya, kami menggunakan variabel referensi dengan menetapkan “rByref(x_var)” ke “int& y_var”. Kemudian, kami juga mencetak alamat variabel referensi “&y_var” tersebut. Di bawahnya, kita menyalin variabel “x_var” ke dalam variabel “z_var” dan juga mencetak alamat variabel yang disalin ini yaitu “&z_var”. Setelah ini, kita memanggil fungsi “rByref()”, meneruskan variabel “x_var” sebagai parameter di dalamnya, dan menetapkan “93” ke variabel ini. Kami juga merender alamat “x_var” lagi dengan meletakkan “&x_var” di “cout”.

Kode 4:

#termasuk
menggunakan namespace std;
ke dalam & rByref ( ke dalam & data )
{
cout << 'Alamat data:' << & data << akhir;
kembali data;
}
ke utama ( )
{
ke dalam x_var = 42 ;
cout << 'Alamat x_var:' << & x_var << akhir;
ke dalam & y_var = rByref ( x_var ) ;
cout << 'Alamat y_var:' << & y_var << akhir;
int z_var = rByref ( x_var ) ;
cout << 'Alamat z_var:' << & z_var << akhir;
rByref ( x_var ) = 93 ;
cout << 'Alamat x_var:' << & x_var << akhir;
kembali 0 ;
}


Keluaran:

Hasilnya memperjelas bahwa alamat variabel kloning, “z_var”, berbeda dari semua lokasi lain yang direferensikan oleh variabel asli, “x_var”.

Kesimpulan

Konsep “referensi pengembalian” dieksplorasi dalam tutorial ini secara rinci. Kita belajar bahwa “referensi pengembalian” mirip dengan “petunjuk” dalam pemrograman C++. Kita telah membahas bahwa untuk menunjukkan fungsi mana yang mengembalikan referensi, simbol “&” perlu digunakan dengan tipe kembalian fungsi tersebut. Kami mengilustrasikan beberapa contoh dan hasilnya serta memahami konsep ini dalam tutorial ini.