Rumah Kewangan Peribadi Perkataan yang Ditaip dengan kuat dalam C ++ - dummies

Perkataan yang Ditaip dengan kuat dalam C ++ - dummies

Video: mario (less comfortable) (C) 2024

Video: mario (less comfortable) (C) 2024
Anonim

Pengaturcaraan adalah semua tentang keterbacaan. Sukar (sebenarnya tidak mustahil) untuk menulis dan menyelenggara program yang tidak dapat anda baca. Sebahagian daripada membaca penyenaraian kod sumber memahami apa yang digunakan dalam perwakilan program. Bantuan paling asas yang diberikan oleh C ++ adalah #define di mana-mana, seperti contoh berikut:

#define PI 3. 141592653589793

Penyelesaian ini baik untuk nilai individu, walaupun ia menderita dari fakta bahawa Mekanisme #define tidak (tegasnya) sebahagian daripada C / C ++ sejak preprocessor berjalan sebelum pengkompil. Sebagai respons kepada itu, C ++ 2011 memperkenalkan ungkapan berterusan :

constexpr panjang ganda PI = 3. 141592653589793;

Kata kunci constexpr membawa pemalar ke dalam khemah C ++. PI ini mempunyai jenis sebenar, seperti pembolehubah C ++ yang lain. C ++ boleh menghasilkan mesej ralat dengan PI yang membuat lebih banyak akal daripada yang melibatkan 3. 14159.

Ungkapan malar adalah baik untuk nilai tetap individu, tetapi sering pemalar mewakili set perkara dan bukan pemalar semula jadi, seperti contoh berikut:

#define DC_OR_TERRITORY 0 #define ALABAMA 1 #define ALASKA 2 #define ARKANSAS 3 // … dan sebagainya …

Kemungkinan pemalar ini digunakan untuk mengenal pasti negeri-negeri, mungkin digunakan sebagai indeks ke dalam pelbagai objek negeri atau sebagai nilai dalam pangkalan data di suatu tempat.

C ++ telah lama mempunyai mekanisme yang lebih baik untuk menentukan jenis pemalar ini - penghitungan:

enum STATE {DC_OR_TERRITORY, // mendapat 0 ALABAMA, // mendapat 1 ALASKA, // mendapat 2 ARKANSAS, // … dan jadi …};

Kata kunci enum memperkenalkan urutan pemalar yang dipanggil "penghitungan". Dalam hal ini, penghitungan itu membawa nama NEGARA. Setiap elemen penghitungan ini diberikan nilai bermula pada 0 dan bertambah secara berturutan oleh 1, jadi DC_OR_TERRITORY ditakrifkan sebagai 0, ALABAMA ditakrifkan sebagai 1, dan seterusnya. Anda boleh mengatasi jujukan tambahan ini dengan menggunakan pernyataan penyerah seperti berikut:

enum STATE {DC, TERRITORY = 0, ALABAMA, ALASKA, // … dan sebagainya …};

Versi STATE ini menentukan unsur DC, yang diberi nilai 0. Ia kemudian menetapkan elemen TERRITORY yang baru, yang juga diberi nilai 0. ALABAMA mengambil 1, seperti sebelumnya.

Dalam praktiknya, pengaturcara boleh menggunakan penghitungan untuk menulis kod yang boleh dibaca seperti berikut:

double taxRate (NEGARA) {return taxRatesByState [s];}

Satu-satunya masalah dengan pendekatan ini ialah penghitungan ini tidak membuat jenis baru (seperti yang anda fikirkan).Malah, mengikut standard, STATE hanyalah nama lain untuk int - dan pemalar ALABAMA, ALASKA, dan sebagainya adalah semua jenis const int.

Pengkompil gcc sebenarnya menyediakan enum yang diisytiharkan dengan cara ini sedikit kuasa lebih daripada sekadar memanggilnya satu lagi bentuk int. Anda sebenarnya boleh memuatkan fungsi berdasarkan jenis enum:

void fn (STATE s); void fn (int n); fn (ALASKA); / / invokes fn (NEGERI)

Standard 2011 membolehkan pengaturcara untuk membuat jenis yang sama sekali baru menggunakan kata kunci enum. Oleh kerana pencipta piawai baru tidak mahu memecahkan kod yang ada, piawai itu memerlukan penambahan kata kunci tambahan untuk menentukan jenis pencacah, seperti contoh berikut:

kelas ENUM STATE {DC, TERRITORY = 0, ALABAMA, ALASKA, // … dan sebagainya …};

Kelas penghitungan kini merupakan jenis skala penuh seperti mana-mana kelas yang ditentukan pengguna lain. Berikut ini tidak lagi sah lagi untuk dua sebab:

int s = ALASKA;

Pertama, ALASKA tetap hanya ditentukan dalam ruang nama STATE. Oleh itu, nama pemalar adalah NEGARA:: ALASKA. Kedua, jenis ini bukan int tetapi NEGARA. Anda tidak boleh memberikan nilai jenis STATE kepada int.

NEGARA s = NEGARA:: ALASKA;

Pengaturcara boleh mengembalikan NEGARA menjadi int tetapi dia mesti melakukannya dengan jelas-penukaran yang tidak jelas tidak memotongnya dengan kelas penghitungan:

int n = (int) NEGARA:: ALASKA;

Jenis enum baru ini juga boleh didasarkan pada salah satu daripada nombor nombor pengiraan lain selain hanya int:

enum class NEGARA: char {DC, // … sisa perisytiharan sama
Perkataan yang Ditaip dengan kuat dalam C ++ - dummies

Pilihan Editor

Meningkatkan Rancangan Navigasi Blog - dummies

Meningkatkan Rancangan Navigasi Blog - dummies

Reka bentuk navigasi hebat untuk blog anda meningkatkan pengalaman pembaca. Reka bentuk navigasi buruk di blog mengecewakan pengunjung yang ingin mencari catatan blog tertentu dengan cepat, atau membaca siaran berkaitan atau yang serupa. Mengharapkan keperluan pelawat anda dengan memikirkan blog anda seperti kedai, dan jawatan blog anda seperti produk: Catatan popular dan terkini: ...

Meningkatkan Pengalaman Pengguna Blog dengan Plugin - dummies

Meningkatkan Pengalaman Pengguna Blog dengan Plugin - dummies

Beberapa teknologi yang berbeza dapat meningkatkan blog anda . Plug-in, widget, dan alat semua membuat ciri-ciri baru, integrasi, dan penambahan mudah untuk dibungkus dan diedarkan. Teknologi-teknologi ini berkembang sepanjang masa, tetapi untuk mendapatkan blog anda dan berjalan, berikut adalah beberapa pilihan terbaik semasa untuk pelbagai tujuan. Widget / Name Plugin ...

Meningkatkan Tajuk Blog Anda dan Reka Bentuk Tagline untuk SEO - patung

Meningkatkan Tajuk Blog Anda dan Reka Bentuk Tagline untuk SEO - patung

Tag tajuk blog anda dan tagline memberi enjin carian penerangan kandungan blog anda. Reka bentuk blog SEO yang berkesan bermakna memastikan jawatan blog enjin carian yang layak dan halaman mempunyai tag tajuk mereka sendiri dan bahawa slogan setiap halaman penuh dengan kata kunci yang berkaitan.

Pilihan Editor

Office 2013 Save As Dialog Box - dummies

Office 2013 Save As Dialog Box - dummies

Office 2013 menggunakan SkyDrive pengguna Windows semasa sebagai penyimpanan default lokasi. SkyDrive adalah kawasan penyimpanan dalam talian berasaskan awan yang dihoskan oleh Microsoft. Sesiapa yang mendaftarkan perkhidmatan, atau yang log masuk ke Windows 8 dengan Microsoft ID, diberikan sejumlah ruang penyimpanan percuma, dan boleh membeli lebih banyak. Cloud adalah ...

Unclutter Peti Masuk Outlook anda dengan Clutter - dummies

Unclutter Peti Masuk Outlook anda dengan Clutter - dummies

Mahu aplikasi e-mel yang juga pembaca minda? Keinginan anda diberikan. Anda boleh mengucapkan terima kasih kepada Graph Office dan Clutter, ciri baru dalam Outlook. Clutter menggunakan teknologi di sebalik Grafik Pejabat untuk menganalisis isyarat yang anda hantar apabila anda mengambil tindakan terhadap e-mel anda. Sebagai contoh, jika anda cenderung untuk mengabaikan e-mel daripada ...

Pilihan Editor

Elakkan Berat Berat Ketika Menguatkuasakan Garis Panduan Komuniti Dalam Talian - dummies

Elakkan Berat Berat Ketika Menguatkuasakan Garis Panduan Komuniti Dalam Talian - dummies

Hanya kerana anda mempunyai kuasa untuk berbuat demikian tidak bermakna bahawa semua masalah komuniti dalam talian memerlukan amaran dan banner. Ya, anda ingin menonjolkan keadaan negatif di dalam tunas, tetapi tidak, anda tidak mahu mendapat sedikit tentangnya sama ada. Kadang-kadang membiarkan slaid isu baik-baik saja. Sebagai pengurus komuniti, tugas anda untuk mengetahui ...

Elakkan Peluang Yang Berisiko Reputasi Blog Anda - dummies

Elakkan Peluang Yang Berisiko Reputasi Blog Anda - dummies

Apabila anda mengaitkan blog ibu anda dan jenama peribadi anda produk atau jenama syarikat, tidak dapat dielakkan bahawa anda akan menggosok satu sama lain. Suka atau tidak, anda boleh dan boleh dikaitkan dengan jenama itu. Tidak semua syarikat yang ingin memberi anda produk percuma adalah yang anda mahu ...

Peruntukkan Peranan ke Font di Laman Blog Anda - dummies

Peruntukkan Peranan ke Font di Laman Blog Anda - dummies

Apabila anda menetapkan peranan ke fon anda, membantu memastikan reka bentuk blog anda kelihatan profesional. Menjaga tujuan fon anda jelas menjadikan reka bentuk navigasi blog anda lebih berkesan dan reka bentuk keseluruhan anda lebih mudah di mata. Selepas anda memilih dua atau tiga fon pelengkap yang juga mempunyai perbezaan yang cukup untuk menonjol dari satu sama lain (lihat ...