Untuk pertanyaan pertama, selain soal gaya (sudah jelas bahwa ini adalah variabel kelas dan tidak memiliki objek terkait), Fred Larsen, dalam komentar atas pertanyaan tersebut, mengacu pada pertanyaan sebelumnya. Baca Jawaban Adam Rosenthal untuk sangat alasan bagus mengapa Anda ingin berhati-hati dengan ini. (Saya akan memilih Fred jika dia mempostingnya sebagai jawaban, tetapi saya tidak dapat menghargai di mana seharusnya jawabannya. Saya memilih Adam.)
Mengenai pertanyaan kedua Anda:
Mengapa saya harus mengulangi bagian "const double" di file cpp saya?
Anda harus mengulangi tipe ini terutama sebagai detail implementasi: begitulah cara kompiler C++ mem-parsing sebuah deklarasi. Ini juga tidak ideal untuk variabel lokal, dan C++1x (sebelumnya C++0x) menggunakan kata kunci auto
untuk menghindari pengulangan untuk variabel fungsi reguler.
Jadi ini:
vector<string> v;
vector<string>::iterator it = v.begin();
bisa menjadi ini:
vector<string> v;
auto it = v.begin();
Tidak ada alasan yang jelas mengapa ini tidak bisa bekerja dengan statis juga, jadi dalam kasus Anda:
const double Foo::d = 42;
bisa menjadi seperti ini.
static Foo::d = 42;
Kuncinya adalah memiliki beberapa cara untuk mengidentifikasi hal ini sebagai sebuah deklarasi.
Catatan Saya mengatakan tidak ada alasan yang jelas: Tata bahasa C++ adalah legenda hidup: sangat sulit untuk mencakup semua kasus tepinya. Menurut saya, hal di atas tidak berpikir ambigu, tetapi mungkin saja ambigu. Jika tidak, mereka dapat menambahkannya ke bahasa tersebut. Beritahu mereka tentang hal itu ... untuk C++2x :/.
person
quark
schedule
06.08.2009