มีสี่วิธีในการส่งผ่านวัตถุไปยังฟังก์ชัน สมมติว่าคุณมีคลาส X และต้องการส่งต่อไปยังฟังก์ชันสนุกๆ
ส่งต่อความคุ้มค่า
สิ่งนี้จะสร้างสำเนาเฉพาะของวัตถุในขอบเขตของฟังก์ชัน สิ่งที่คุณแก้ไขที่นี่จะไม่ปรากฏในวัตถุที่ส่งผ่าน ตัวอย่างเช่น
ประกาศ
void fun(X x);
กำลังโทร
X x; fun(x);
ผ่านโดยการอ้างอิง
สิ่งนี้ส่งผ่านการอ้างอิงไปยังอ็อบเจ็กต์ไปยังฟังก์ชัน สิ่งที่คุณแก้ไขที่นี่จะสะท้อนให้เห็นในวัตถุที่ส่งผ่านไปยังวัตถุนั้น ไม่มีการสร้างสำเนาของวัตถุ ตัวอย่างเช่น
ประกาศ
void fun(X &x);
กำลังโทร
X x; fun(x);
ผ่านอ้างอิง const
สิ่งนี้ส่งผ่านการอ้างอิง const ไปยังอ็อบเจ็กต์ไปยังฟังก์ชัน คุณไม่สามารถแก้ไข/กำหนดวัตถุใหม่ได้ที่นี่โดยตรง (คุณสามารถใช้วิธีการดังกล่าวได้) สิ่งนี้มีประโยชน์หากคุณต้องการให้ฟังก์ชันมีเฉพาะสำเนาของอ็อบเจ็กต์แบบอ่านอย่างเดียว ไม่มีการสร้างสำเนาของวัตถุ ตัวอย่างเช่น
ประกาศ
void fun(X const *x);
กำลังโทร
X x; fun(&x);
ผ่านตัวชี้ const
สิ่งนี้จะส่งผ่านตัวชี้ const ไปยังวัตถุไปยังฟังก์ชัน คุณไม่สามารถแก้ไข/กำหนดตัวชี้ใหม่ที่นี่ สิ่งนี้มีประโยชน์หากคุณต้องการให้ฟังก์ชันมีเฉพาะที่อยู่ของวัตถุนี้ในพอยน์เตอร์ ไม่มีการสร้างสำเนาของวัตถุ ตัวอย่างเช่น
ประกาศ
void fun(X *x);
กำลังโทร
X x; fun(&x);
ผ่านพอยน์เตอร์
ซึ่งส่งผ่านตัวชี้ไปยังวัตถุไปยังฟังก์ชัน ซึ่งคล้ายกับการส่งการอ้างอิงไปยังวัตถุ ไม่มีการสร้างสำเนาของวัตถุ ตัวอย่างเช่น
ประกาศ
<void fun(X *x);>
กำลังโทร
X x; fun(&x);