Pertanyaan Di mana saya harus meletakkan fungsi-fungsi yang tidak terkait dengan suatu kelas telah memicu beberapa perdebatan tentang apakah masuk akal dalam C ++ untuk menggabungkan fungsi-fungsi utilitas dalam suatu kelas atau hanya membuatnya ada sebagai fungsi bebas dalam namespace.
Saya berasal dari latar belakang C # di mana opsi terakhir tidak ada dan dengan demikian cenderung menggunakan kelas statis dalam kode C ++ kecil yang saya tulis. Namun jawaban tertinggi pada pertanyaan itu serta beberapa komentar mengatakan bahwa fungsi bebas lebih disukai, bahkan menunjukkan kelas statis adalah anti-pola. Mengapa begitu di C ++? Setidaknya di permukaan, metode statis di kelas tampaknya tidak bisa dibedakan dari fungsi bebas di namespace. Mengapa demikian preferensi untuk yang terakhir?
Apakah ada yang berbeda, jika koleksi fungsi utilitas memerlukan beberapa data bersama, mis. Cache yang dapat disimpan dalam bidang statis pribadi?