Saya agak baru dalam pengembangan perangkat lunak skala besar di C ++, dan saya bertanya-tanya di sisi desain.
Saya membaca pertanyaan ini , dan saya pikir, secara keseluruhan, setelah kami melewati definisi konstan dan hal-hal sepele lainnya, file header C ++ hanyalah definisi API :
Mereka menentukan apa yang bisa digunakan oleh programmer lain (atau diri Anda dari modul lain) (kelas, fungsi publik), tetapi tidak ada kelas atau fungsi pribadi yang harus didefinisikan di dalamnya. Ini seperti file header yang mendefinisikan abstraksi (antarmuka ...) dan file sumber mengimplementasikannya. Setelah file sumber dikompilasi, detail implementasi disembunyikan, dan tetap menjadi header yang tersedia untuk umum yang mendefinisikan apa yang dapat dilakukan modul.
Saya merasa pandangan tentang pemisahan file sumber / header ini jauh lebih mudah dipahami dan diikuti daripada penjelasan yang biasa, karena Anda hanya bisa berpikir "akan XXX
tersedia materi API untuk umum, atau apakah ini merupakan detail pembuatan sosis untuk disembunyikan di dalam file sumber yang dirahasiakan? "
Apakah model mental file header saya kira-kira benar? Apa yang saya lewatkan?