ใน C++ มี 4 วิธีหลักในการส่งอ็อบเจ็กต์ไปยังฟังก์ชัน สมมติว่าคุณมีคลาส X และต้องการส่งไปยังฟังก์ชัน fun ดังนี้
การส่งแบบ Pass by Value
วิธีนี้จะสร้าง shallow copy ของอ็อบเจ็กต์ในขอบเขตของฟังก์ชัน การเปลี่ยนแปลงค่าในฟังก์ชันจะไม่ส่งผลต่ออ็อบเจ็กต์ต้นฉบับ ตัวอย่างเช่น
การประกาศ
void fun(X x);
การเรียกใช้
X x; fun(x);
การส่งแบบ Pass by Reference
วิธีนี้จะส่ง reference ของอ็อบเจ็กต์ไปยังฟังก์ชัน การเปลี่ยนแปลงค่าจะส่งผลต่ออ็อบเจ็กต์ต้นฉบับ ไม่มีการสร้างสำเนาของอ็อบเจ็กต์ ตัวอย่างเช่น
การประกาศ
void fun(X &x);
การเรียกใช้
X x; fun(x);
การส่งแบบ Pass by const Reference
วิธีนี้จะส่ง const reference ไปยังฟังก์ชัน ไม่สามารถแก้ไข/กำหนดค่าอ็อบเจ็กต์ได้โดยตรง (แต่ยังเรียกใช้เมธอดที่ทำได้) เหมาะสำหรับกรณีที่ต้องการให้ฟังก์ชันมีเพียงสำเนาสำหรับอ่านอย่างเดียว ไม่มีการสร้างสำเนาของอ็อบเจ็กต์ ตัวอย่างเช่น
การประกาศ
void fun(const X &x);
การเรียกใช้
X x; fun(x);
การส่งแบบ Pass by const Pointer
วิธีนี้จะส่ง const pointer ไปยังฟังก์ชัน ไม่สามารถแก้ไข/กำหนดค่า pointer ได้ เหมาะสำหรับกรณีที่ต้องการให้ฟังก์ชันมีเพียงที่อยู่ของอ็อบเจ็กต์ใน pointer ไม่มีการสร้างสำเนาของอ็อบเจ็กต์ ตัวอย่างเช่น
การประกาศ
void fun(const X *x);
การเรียกใช้
X x; fun(&x);
การส่งแบบ Pass by Pointer
วิธีนี้จะส่ง pointer ไปยังฟังก์ชัน คล้ายกับการส่งแบบ reference ไม่มีการสร้างสำเนาของอ็อบเจ็กต์ ตัวอย่างเช่น
การประกาศ
void fun(X *x);
การเรียกใช้
X x; fun(&x);