C++ Academy · Pelajaran

Mengapa Rujukan ialah Alias untuk Pemboleh Ubah

Perkenalkan rujukan sebagai alias pada masa kompilasi yang tidak boleh ditetapkan semula atau menjadi NULL.

Pelajaran 1 daripada 413 langkah

Mengapa Rujukan ialah Alias untuk Pemboleh Ubah ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Apakah Itu Rujukan

Rujukan ialah nama alternatif pada masa kompilasi untuk pemboleh ubah lain. Ia bukan pointer dan bukan salinan — ia objek yang sama dengan nama yang berbeza.

Sintaks Rujukan

Gunakan & selepas jenis. Rujukan mesti dimulakan semasa pengisytiharan dan tidak boleh dipautkan semula.

int x = 10;
int& ref = x;     // ref is an alias for x
ref = 20;         // x is now 20

Perbandingan dengan Pointer

Rujukan dan pointer kedua-duanya membuat capaian tidak langsung, tetapi:

  • Rujukan mesti dimulakan; pointer boleh bernilai null
  • Rujukan tidak boleh ditugaskan semula kepada objek lain
  • Rujukan tidak pernah menggunakan * atau -> — rupanya seperti pemboleh ubah biasa

Tiada Pemautan Semula

Setelah dipautkan, rujukan sentiasa merujuk kepada objek yang sama. Menetapkan nilai kepadanya mengubah nilai asas, bukannya rujukan itu sendiri.

int a = 1, b = 2;
int& r = a;
r = b;       // a becomes 2, r still refers to a

Rujukan Mempunyai Alamat yang Sama

Rujukan berkelakuan seolah-olah ia ialah pemboleh ubah asal. Mendapatkan alamatnya memberikan alamat objek yang dirujuk.

int x = 42;
int& r = x;
std::cout << (&r == &x);   // 1 (true)

Rujukan Const

Rujukan const ialah nama samaran baca sahaja. Ia berguna untuk menghantar objek besar tanpa menyalinnya.

void print(const std::string& s) {
    std::cout << s;  // can read, not modify
}

Memautkan Rujukan Const kepada Objek Sementara

Rujukan const memanjangkan hayat objek sementara sehingga hayat rujukan itu sendiri — berguna dalam ungkapan.

const std::string& greeting = std::string("Hi");
std::cout << greeting;  // valid

Rujukan sebagai Jenis Pulangan

Fungsi boleh memulangkan rujukan — berguna untuk merangkaikan panggilan atau memberikan capaian terus kepada ahli. Berhati-hati apabila memulangkan rujukan kepada pemboleh ubah tempatan!

int& at(std::vector<int>& v, size_t i) {
    return v[i];
}

at(v, 0) = 99;   // modifies v[0]

Jangan Pernah Memulangkan Rujukan kepada Pemboleh Ubah Tempatan

Pemboleh ubah tempatan itu musnah apabila fungsi dipulangkan; rujukan tersebut menjadi tergantung. Ini ialah tingkah laku yang tidak ditakrifkan.

// BUG
int& bad() {
    int x = 10;
    return x;  // x dies here
}

Rujukan dalam for Berasaskan Julat

for berasaskan julat menggunakan rujukan secara tersirat. auto& mendapatkan rujukan; auto mendapatkan salinan.

Rujukan dalam Pengikatan Berstruktur

Pengikatan berstruktur C++17 boleh dibuat mengikut nilai, mengikut rujukan atau mengikut rujukan const.

std::pair<int, int> p = {1, 2};
auto [a, b] = p;            // copies
auto& [x, y] = p;           // references — modifying x changes p.first

Semakan Pantas

Mengapakah rujukan tidak boleh dipautkan semula kepada pemboleh ubah lain kemudian?

Ringkasan

Rujukan ialah nama alternatif pada masa kompilasi yang mesti dimulakan dan tidak boleh dipautkan semula. Rupanya seperti pemboleh ubah biasa, tidak pernah null dan tidak pernah ditugaskan semula. Gunakan rujukan const untuk paparan baca sahaja.

Percuma untuk bermula

Pelajari C++ dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “Mengapa Rujukan ialah Alias untuk Pemboleh Ubah” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Mengapa Rujukan ialah Alias untuk Pemboleh Ubah”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mengapa Rujukan ialah Alias untuk Pemboleh Ubah”?

Perkenalkan rujukan sebagai alias pada masa kompilasi yang tidak boleh ditetapkan semula atau menjadi NULL. Anda berlatih C++ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan C++ Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Mengapa Rujukan ialah Alias untuk Pemboleh Ubah” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mengapa Rujukan ialah Alias untuk Pemboleh Ubah
  2. Hantar mengikut Nilai berbanding Hantar mengikut Rujukan
  3. Rujukan const dan Masa untuk Menggunakannya
  4. Jangka Hayat Rujukan dan Rujukan Tergantung
← Kembali ke C++ Academy