Untuk pemirsa pertanyaan ini di masa depan, saya ingin menunjukkan bahwa Anda harus menghindari apa yang disarankan oleh monkey0506 .
File header adalah untuk deklarasi.
File header dikompilasi satu kali untuk setiap .cppfile yang secara langsung atau tidak langsung #includes, dan kode di luar fungsi apa pun dijalankan pada inisialisasi program, sebelumnya main().
Dengan memasukkan: foo::i = VALUE;ke dalam header, foo:iakan diberikan nilai VALUE(apa pun itu) untuk setiap .cppfile, dan penugasan ini akan terjadi dalam urutan yang tidak ditentukan (ditentukan oleh tautan) sebelum main()dijalankan.
Bagaimana jika kita #define VALUEmenjadi nomor yang berbeda di salah satu .cppfile kita ? Ini akan dikompilasi dengan baik dan kita tidak akan tahu mana yang menang sampai kita menjalankan program.
Jangan pernah memasukkan kode yang dieksekusi ke header karena alasan yang sama bahwa Anda tidak pernah #includememiliki .cppfile.
termasuk penjaga (yang saya setuju Anda harus selalu gunakan) melindungi Anda dari sesuatu yang berbeda: header yang sama secara tidak langsung #included beberapa kali saat mengkompilasi satu .cppfile