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

QuickBooks 2016: Senarai Kod Cukai Jualan, Senarai Kelas dan Senarai Nama Lain -

QuickBooks 2016: Senarai Kod Cukai Jualan, Senarai Kelas dan Senarai Nama Lain -

QuickBooks 2016 menawarkan banyak senarai. Anda mungkin ingin melihat senarai Kod Cukai Jualan, senarai Kelas, dan senarai Nama Lain. Jika anda perlu melihat senarai ini, cuma pilih senarai dari menu Senarai atau pilih Daftar → Senarai Profil Pelanggan & Vendor dan pilih senarai dari submenu yang ...

Perubahan Tarikh cepat - dummies

Perubahan Tarikh cepat - dummies

Ingin memasukkan atau menukar tarikh dalam entri QuickBooks? Memasuki dan mengedit tarikh dalam QuickBooks adalah pantas dan mudah apabila anda menggunakan pintasan keyboard QuickBooks yang sangat berguna ini. QuickBooks Key atau Keystroke Combination Shortcut Results + Next day - Hari Sebelumnya T Hari W Hari Pertama Minggu K Hari terakhir ...

QuickBooks Mematuhi Pesanan Pembelian - dummies

QuickBooks Mematuhi Pesanan Pembelian - dummies

Anda boleh membuat PO QuickBooks walaupun anda memesan barang melalui telefon atau melalui World Wide Web - iaitu, apabila anda tidak meminta barangan secara bertulis. Mengisi pesanan pembelian membolehkan anda menentukan item yang ada pada pesanan dan apabila item tersebut akan tiba. Apa yang anda perlu lakukan ialah bertanya ...

Pilihan Editor

Buat Label dengan Grafik di Word 2016 - dummies

Buat Label dengan Grafik di Word 2016 - dummies

Kata membolehkan anda mencetak helaian label yang serupa, tetapi ia mengandungi hanya teks membosankan. Cuba rempah-rempah dengan menambah warna, fancy, dan pemformatan. Cara terbaik untuk memasak label ialah menambah gambar atau grafik lain. Ikuti langkah berikut: Klik tab Mailings. Dalam kumpulan Buat, klik ...

Cara Mencipta Blok Bangunan AutoTeks dalam Kata 2016 - dummies

Cara Mencipta Blok Bangunan AutoTeks dalam Kata 2016 - dummies

Kata 2016 tidak mempunyai fungsi AutoComplete . Ia telah dikeluarkan beberapa versi yang lalu. Di tempatnya, anda membuat blok bangunan AutoText, yang berfungsi seperti AutoComplete lama. Blok bangunan AutoText ialah pembantu menaip. Anda membuat blok bangunan untuk teks yang sering anda taip, seperti nama, alamat, permintaan maaf, dan sebagainya. ...

Membuat Kad Ucapan di Microsoft Word 2003 - dummies

Membuat Kad Ucapan di Microsoft Word 2003 - dummies

Jika anda ingin membuat sesuatu dalam Word yang hanya akan mempesonakan seseorang, cuba tangan anda pada kad ucapan tersuai. Untuk menyiapkan Word untuk membuat kad ucapan dari satu lembaran kertas bersaiz standard, ikuti langkah-langkah berikut: 1. Pilih Fail -> Persediaan Halaman. 2. Klik tab Margin. 3. Pilih Landskap ...

Pilihan Editor

Cara Menyediakan Pengawal Cari untuk Geocoding dalam App iOS Anda

Cara Menyediakan Pengawal Cari untuk Geocoding dalam App iOS Anda

Anda sudah mempunyai satu teka-teki geocoding di tempat di papan cerita anda untuk apl iOS anda; ini Pengawal Cari yang sesuai bernama. Caranya ialah untuk menambah pengawal peribadi yang akan melaksanakan ciri Cari yang anda mahu. Untuk menambah projek anda, ikuti langkah-langkah berikut: Dalam Navigator Projek, pilih ...

Cara Menyediakan Pengawal Peta di Main_iPad. Storyboard dalam Apl IOS anda - dummies

Cara Menyediakan Pengawal Peta di Main_iPad. Storyboard dalam Apl IOS anda - dummies

Sekali anda mempunyai pengawal paparan peribadi untuk MapController dalam aplikasi iOS anda, anda perlu memberitahu papan cerita iPad untuk memuat pengawal pandangan adat anda dan bukannya UIViewController. Ikuti langkah berikut: Dalam Navigator Projek, pilih Main_iPad. papan cerita dan kemudian pilih Lihat Pengawal di Lihat Pengawal - Adegan Peta dalam Garis Besar Dokumen. ...