มีสองเหตุผลในการทำเช่นนี้
ขั้นแรกให้ตระหนักว่าตัวระบุการเข้าถึงนั้นใช้สำหรับคอมไพเลอร์และไม่เกี่ยวข้องกับรันไทม์ การเข้าถึงสมาชิกส่วนตัวนอกขอบเขตนั้นเป็นข้อผิดพลาดในการคอมไพล์
ความรัดกุม
พิจารณาฟังก์ชั่นที่สั้นหนึ่งหรือสองบรรทัด มันมีอยู่เพื่อลดการจำลองแบบของรหัสที่อื่นซึ่งยังมีข้อได้เปรียบของความสามารถในการเปลี่ยนวิธีการทำงานของอัลกอริทึมหรือสิ่งอื่นใดในที่เดียวแทนหลาย ๆ อย่าง (เช่นการเปลี่ยนอัลกอริทึมการเรียงลำดับ)
คุณต้องการให้มีหนึ่งหรือสองบรรทัดอย่างรวดเร็วในส่วนหัวหรือมีฟังก์ชั่นต้นแบบที่นั่นพร้อมกับการติดตั้งที่ไหนสักแห่ง? มันง่ายต่อการค้นหาในส่วนหัวและสำหรับฟังก์ชั่นระยะสั้นมันเป็นสิ่งที่ละเอียดยิ่งกว่าที่จะมีการใช้งานแยกต่างหาก
มีข้อได้เปรียบที่สำคัญอีกประการหนึ่งซึ่งก็คือ ...
ฟังก์ชั่นแบบอินไลน์
ฟังก์ชั่นส่วนตัวอาจจะสามารถ inline และจำเป็นต้องให้มันอยู่ในส่วนหัว พิจารณาสิ่งนี้:
class A {
private:
inline void myPrivateFunction() {
...
}
public:
inline void somePublicFunction() {
myPrivateFunction();
...
}
};
ฟังก์ชั่นส่วนตัวอาจจะสามารถ inline พร้อมกับฟังก์ชั่นสาธารณะ ซึ่งทำตามดุลยพินิจของคอมไพเลอร์เนื่องจากinline
คำหลักเป็นคำแนะนำทางเทคนิคไม่ใช่ข้อกำหนด