การอ้างอิง C ++
ตัวแปรอ้างอิงคือนามแฝงนั่นคือชื่ออื่นสำหรับตัวแปรที่มีอยู่แล้ว เมื่อเริ่มต้นการอ้างอิงด้วยตัวแปรแล้วอาจใช้ชื่อตัวแปรหรือชื่ออ้างอิงเพื่ออ้างถึงตัวแปร
การอ้างอิงเทียบกับตัวชี้
การอ้างอิงมักสับสนกับตัวชี้ แต่ความแตกต่างที่สำคัญสามประการระหว่างการอ้างอิงและตัวชี้คือ -
คุณไม่สามารถมีการอ้างอิง NULL คุณต้องสามารถสันนิษฐานได้เสมอว่าข้อมูลอ้างอิงเชื่อมต่อกับส่วนจัดเก็บข้อมูลที่ถูกต้องตามกฎหมาย
เมื่อเริ่มต้นการอ้างอิงไปยังอ็อบเจ็กต์แล้วจะไม่สามารถเปลี่ยนเป็นการอ้างถึงอ็อบเจ็กต์อื่นได้ ตัวชี้สามารถชี้ไปที่วัตถุอื่นได้ตลอดเวลา
การอ้างอิงต้องเริ่มต้นเมื่อสร้างขึ้น พอยน์เตอร์สามารถเริ่มต้นได้ตลอดเวลา
การสร้างการอ้างอิงใน C ++
คิดว่าชื่อตัวแปรเป็นป้ายกำกับที่ติดกับตำแหน่งของตัวแปรในหน่วยความจำ จากนั้นคุณสามารถคิดว่าการอ้างอิงเป็นป้ายกำกับที่สองที่ติดกับตำแหน่งหน่วยความจำนั้น ดังนั้นคุณสามารถเข้าถึงเนื้อหาของตัวแปรผ่านชื่อตัวแปรดั้งเดิมหรือการอ้างอิง ตัวอย่างเช่นสมมติว่าเรามีตัวอย่างต่อไปนี้ -
int i = 17;
เราสามารถประกาศตัวแปรอ้างอิงสำหรับ i ได้ดังนี้
int& r = i;
อ่าน & ในประกาศเหล่านี้เป็น reference. ดังนั้นให้อ่านคำประกาศแรกว่า "r คือการอ้างอิงจำนวนเต็มเริ่มต้นเป็น i" และอ่านการประกาศครั้งที่สองเป็น "s เป็นการอ้างอิงสองครั้งที่เริ่มต้นเป็น d" ตัวอย่างต่อไปนี้ใช้การอ้างอิงเกี่ยวกับ int และ double -
#include <iostream>
using namespace std;
int main () {
// declare simple variables
int i;
double d;
// declare reference variables
int& r = i;
double& s = d;
i = 5;
cout << "Value of i : " << i << endl;
cout << "Value of i reference : " << r << endl;
d = 11.7;
cout << "Value of d : " << d << endl;
cout << "Value of d reference : " << s << endl;
return 0;
}
เมื่อโค้ดด้านบนถูกคอมไพล์เข้าด้วยกันและดำเนินการจะให้ผลลัพธ์ดังนี้ -
Value of i : 5
Value of i reference : 5
Value of d : 11.7
Value of d reference : 11.7
โดยปกติการอ้างอิงจะใช้สำหรับรายการอาร์กิวเมนต์ของฟังก์ชันและค่าที่ส่งคืนของฟังก์ชัน ดังนั้นต่อไปนี้เป็นสองหัวข้อสำคัญที่เกี่ยวข้องกับการอ้างอิง C ++ ซึ่งควรชัดเจนสำหรับโปรแกรมเมอร์ C ++ -
ซีเนียร์ No | แนวคิดและคำอธิบาย |
---|---|
1 | การอ้างอิงเป็นพารามิเตอร์
C ++ สนับสนุนการส่งผ่านการอ้างอิงเป็นพารามิเตอร์ของฟังก์ชันปลอดภัยกว่าพารามิเตอร์ |
2 | อ้างอิงเป็นค่าส่งคืน
คุณสามารถส่งคืนการอ้างอิงจากฟังก์ชัน C ++ เหมือนกับข้อมูลประเภทอื่น ๆ |