Ada dua alasan untuk melakukan ini.
Pertama, sadari bahwa specifier akses adalah untuk kompiler , dan tidak relevan saat runtime. Mengakses anggota pribadi di luar ruang lingkup adalah kesalahan kompilasi .
Keringkasan yg padat isinya
Pertimbangkan fungsi yang pendek, satu atau dua baris. Itu ada untuk mengurangi replikasi kode di tempat lain, yang juga memiliki keuntungan karena dapat mengubah cara suatu algoritma atau apa pun yang bekerja di satu tempat, bukan banyak (misalnya mengubah algoritma penyortiran).
Apakah Anda lebih suka memiliki satu atau dua baris cepat di header, atau memiliki prototipe fungsi di sana plus implementasi di suatu tempat? Lebih mudah ditemukan di header, dan untuk fungsi pendek, jauh lebih tepat untuk memiliki implementasi terpisah.
Ada keuntungan besar lainnya, yaitu ...
Fungsi sebaris
Fungsi pribadi mungkin dapat digarisbawahi, dan ini mengharuskannya berada di header. Pertimbangkan ini:
class A {
private:
inline void myPrivateFunction() {
...
}
public:
inline void somePublicFunction() {
myPrivateFunction();
...
}
};
Fungsi pribadi mungkin dapat digarisbawahi bersama dengan fungsi publik. Itu dilakukan atas kebijakan kompiler, karena inline
kata kunci secara teknis merupakan saran , bukan keharusan.