C ++

Jenis C ++

Jenis C ++
Entiti C ++ adalah nilai, objek, rujukan, fungsi, pencacah, jenis, anggota kelas, bidang bit, pengikatan berstruktur, ruang nama, templat, pengkhususan templat, atau paket parameter. Entiti boleh terdiri daripada satu atau lebih jenis. Terdapat dua kategori jenis C ++: jenis asas dan sebatian. Skalar adalah aritmetik atau jenis objek penunjuk. Jenis asas adalah skalar, sementara jenis entiti selebihnya adalah jenis kompaun.

Memori komputer adalah rangkaian sel. Setiap sel mempunyai ukuran satu bait, biasanya ruang yang dihuni oleh watak Eropah Barat. Ukuran objek diberikan dalam bait. Artikel ini memberikan ringkasan jenis C ++. Anda semestinya sudah mempunyai pengetahuan asas mengenai C ++, untuk memahami artikel ini.

Kandungan Artikel

- Jenis Asas
- Kaedah Membina Jenis Sebatian
- Susunan
- Penghitungan
- Kelas
- Kesatuan
- Rujukan
- Fungsi
- Jenis Sebatian Lain
- Kesimpulannya

Jenis Asas

Jenis asas adalah jenis skalar.

bool

Jenis Boolean atau jenis bool mempunyai nilai benar atau salah untuk 1 atau 0. Betul atau salah menempati satu bait.

char, char yang tidak ditandatangani, dan char yang ditandatangani

Ciri khas untuk satu watak Eropah Barat. Ia biasanya menggunakan satu bait. Terdapat juga char yang tidak ditandatangani dan ditandatangani, yang masing-masing adalah bilangan bulat lapan-bit. Huruf yang tidak ditandatangani tidak melibatkan nilai negatif, sementara huruf yang ditandatangani melibatkan nilai negatif. Jenis nilai yang dimiliki oleh char bergantung pada penyusunnya dan mungkin hanya char yang tidak ditandatangani. Ketiga-tiga jenis watak ini dipanggil, jenis watak sempit, dan masing-masing menempati satu bait.

Bilangan bulat

Terdapat lima jenis integer standard yang tidak ditandatangani dan lima jenis integer standard yang ditandatangani. Lima jenis bilangan bulat yang tidak ditandatangani adalah: “char unsigned”, “unsigned short int”, “unsigned int”, “unsigned long int”, dan “unsigned long long int”. Lima jenis bilangan bulat yang sesuai adalah: “char char”, “short int”, “int”, “long int”, dan “long long int”.

"Char tidak bertanda" adalah jenis yang sama dengan jenis watak sempit (lihat di atas). "Char char" adalah jenis lain dari jenis watak sempit (lihat di atas).

Dengan penyusun g ++, "char unsigned" atau "char sign" menempati satu bait; "Int pendek yang tidak ditandatangani" atau "int pendek" menempati dua bait; "Int tidak bertanda" atau "int" menempati empat bait; "Int panjang tidak ditandatangani" atau "int panjang" menempati 8 bait; "Int panjang yang tidak ditandatangani" atau "int panjang panjang" masih menempati 8 bait (seperti sekarang).

char16_t, char32_t, wchar_t

Semasa berurusan dengan watak-watak Eropah Barat, jenis char cukup dalam banyak keadaan. Walau bagaimanapun, ketika berurusan dengan bahasa Cina dan bahasa Timur lain, char16_t, atau char32_t, atau wchar_t diperlukan. Dengan penyusun g ++, char16_t menempati dua bait; char32_t menempati empat bait dan wchar_t juga menempati empat bait.

Bool, char, char16_t, char32_t, the wchar_t, signed, and the unsigned jenis integer, membentuk satu set lain, disebut integral (integer) jenis.

Pada titik ini dalam artikel, dua jenis kolektif telah disebutkan: jenis watak sempit dan jenis integral.

Jenis Titik Terapung

Anggapkan bahawa angka 457,000 dan 457,230 adalah bacaan yang sama, diukur oleh dua alat pengukur yang berbeza. 457,230 lebih tepat daripada 457,000 kerana nilainya lebih terperinci (melibatkan tempat yang lebih kecil: + 200 tambah 30). Nombor terapung ialah nombor dengan bahagian pecahan (perpuluhan). Walaupun nombor di komputer adalah urutan bit, beberapa nombor titik terapung lebih tepat daripada yang lain.

Beberapa alat pengukur mengambil ukuran dalam langkah minimum, katakan 10 unit. Instrumen sedemikian akan mempunyai bacaan berikut: 10, 20, 30, 40,… 100, 110, 130, 140,… 200, 210, 220, 230, 240, dan sebagainya. Walaupun nombor di komputer adalah urutan bit, nombor titik terapung berada dalam beberapa langkah minimum (jauh lebih kecil daripada 10 unit).

C ++ mempunyai tiga jenis floating-point, iaitu: float, double, dan long double. Untuk mana-mana penyusun, double mesti mempunyai ketepatan yang lebih tinggi daripada float atau sekurang-kurangnya float; panjang berganda mesti mempunyai ketepatan yang lebih tinggi daripada dua kali ganda atau sekurang-kurangnya dua kali ganda.

Terdapat nama kolektif ketiga: jenis aritmetik. Ini adalah nama untuk jenis integral dan floating-point. Perhatikan bahawa ini juga nama untuk semua jenis skalar, seperti yang dijelaskan sejauh ini.

Dengan penyusun g ++, bilangan bait untuk apungan adalah empat; bilangan bait untuk dua kali ganda adalah lapan; bilangan bait untuk dua kali ganda ialah enam belas.

Jenis batal

Dengan penyusun g ++, ukuran jenis kekosongan adalah satu bait. Byte secara rasmi tidak mempunyai bit, yang bermaksud lokasinya mempunyai kandungan kosong.

Kaedah Membina Jenis Sebatian

Jenis majmuk adalah jenis tidak asas. Ini bermaksud jenis sebatian adalah jenis bukan skalar. Bahagian ini menerangkan asas-asas jenis sebatian.

Susunan

Segmen kod berikut menunjukkan susunan int dan susunan watak:

int arrInt [] = 1, 2, 3, 4, 5;
char arrCha [] = 'a', 'b', 'c', 'd', 'e';
cout << arrInt[2] <<" <Keluarannya adalah: 3 c.

Penghitungan

Penghitungan adalah jenis, dengan pemalar bernama. Pertimbangkan segmen kod berikut:

enum a = 3, b, c;
cout << b <<'\n';

Keluarannya adalah: 4. Baris pertama segmen kod adalah penghitungan, dan a, b, atau c adalah penghitung.

Kelas

Kelas adalah unit umum dari mana banyak objek dari unit umum yang sama dapat dibuat (disusun). Program berikut menunjukkan satu kelas dan dua objek, yang disusun daripadanya. Objek seperti itu berbeza dengan objek skalar.

#sertakan
menggunakan ruang nama std;
kelas TheCla

awam:
int num = 5;
int fn ()

nombor balik;

;
int utama ()

TheCla obj1;
TheCla obj2;
cout << obj1.num << " << obj2.num <<'\n';
pulangan 0;

Keluarannya adalah: 5 5. Nama kelasnya adalah TheCla, dan nama dua objek tersebut adalah obj1 dan obj2. Perhatikan titik koma setelah penerangan (definisi) kelas. Perhatikan bagaimana kedua-dua objek tersebut dibuat dalam fungsi utama ().

Nota: num adalah ahli data dan fn adalah fungsi ahli.

Kesatuan

struktur

Struktur seperti array tetapi bukannya mempunyai pasangan indeks / nilai, ia mempunyai pasangan nama / nilai. Nama-nama itu boleh ditulis mengikut urutan. Program berikut menunjukkan struktur dan penggunaannya:

#sertakan
menggunakan ruang nama std;
struktur TheCla

int num = 5;
float flt = 2.3;
char ch = 'a';
obj1, obj2;
int utama ()

cout << obj2.num <<", "<< obj2.flt <<", "<< obj2.ch <<'\n';
pulangan 0;

Keluarannya adalah:

5, 2.3, a

Nama strukturnya adalah TheCla. obj1 dan obj2 adalah dua objek struktur yang berbeza.

Kesatuan

Program berikut menunjukkan kesatuan dan penggunaannya:

#sertakan
menggunakan ruang nama std;
kesatuan TheCla

int int;
float flt = 2.3;
char ch;
obj1, obj2;
int utama ()

cout << obj2.flt <<'\n';
pulangan 0;

Keluarannya adalah: 2.3. Kesatuan ini serupa dengan struktur. Perbezaan utama antara struktur dan kesatuan adalah bahawa, untuk struktur, hanya satu anggota yang boleh mempunyai nilai (diinisialisasi) pada satu-satu masa. Dalam program di atas, member, flt mempunyai nilai 2.3. Setiap anggota yang lain, num atau ch, hanya boleh mempunyai nilai seterusnya jika nilai untuk flt ditinggalkan.

Rujukan

Rujukan adalah sinonim untuk pengecam. Segmen kod berikut menunjukkan cara mendapatkan rujukan kepada pengecam:

int id = 5;
int & ref1 = id;
int & ref2 = id;
cout << id << " << ref1 << " << ref2 <<'\n';

Keluarannya ialah: 5 5 5. ref1 dan ref2 adalah sinonim untuk id.

lvalue Rujukan dan rvalue Rujukan

Rujukan di atas adalah rujukan nilai. Kod berikut menunjukkan rujukan nilai:

int && ref = 5;
cout << ref <<'\n';

Keluarannya adalah: 5. Rujukan ini dibuat tanpa mengenal pasti lokasi dalam memori. Untuk mencapai ini, dua kali ganda & diperlukan, i.e., &&.

Penunjuk

Penunjuk bukanlah entiti C ++. Walau bagaimanapun, ia menyediakan skema yang lebih baik untuk menangani rujukan. Kod berikut menunjukkan bagaimana penunjuk dapat dibuat:

int ptdId = 5;
int ptdId = 5;
int * ptrId;
ptrId = &ptdId;
cout << *ptrId <<'\n';

Keluarannya adalah: 5. Perhatikan perbezaan nama antara ptdId dan ptdId. ptdId adalah objek runcing dan ptrId adalah objek penunjuk. & ptdId mengembalikan alamat objek runcing yang ditugaskan untuk ptrId. Untuk mengembalikan nilai objek runcing, gunakan * ptrId.

Fungsi

Fungsi Asas dan Panggilannya

Kod berikut menunjukkan definisi fungsi asas dan panggilannya:

#sertakan
menggunakan ruang nama std;
int fn (int num)

cout<<"seen"<<'\n';
nombor balik;

int utama ()

int ret = fn (5);
cout << ret <<'\n';
pulangan 0;

Keluarannya adalah

definisi fungsi

5

Panggilan fungsi adalah fn (5). Nama fungsi adalah fn.

Rujukan dan Penunjuk kepada Fungsi

& fn mengembalikan alamat dalam ingatan fungsi yang namanya fn. Pernyataan berikut menyatakan penunjuk ke fungsi:

int (* func) ();

Di sini, func adalah nama penunjuk fungsi. Pasangan kurungan pertama membezakan penunjuk fungsi ini dari penunjuk objek skalar. func boleh dibuat untuk menyimpan alamat fungsi yang dikenalpasti oleh fn, seperti berikut:

func = &fn;

Program berikut meletakkan rujukan fungsi dan penunjuk ke dalam tindakan:

#sertakan
menggunakan ruang nama std;
int fn (int num)

/ * beberapa kenyataan * /
nombor balik;

int utama ()

int (* func) (int);
func = &fn;
int ret = func (5);
cout << ret <<'\n';
pulangan 0;

Keluarannya adalah: 5. Perhatikan bahawa fn dan func masing-masing mempunyai parameter int dalam deklarasi.

Jenis Sebatian Lain

Jenis sebatian asas di atas adalah sebatian dalam diri mereka. Mereka juga digunakan untuk membina jenis sebatian yang terperinci.

mesin taip

Kata sandi ketik digunakan untuk menggantikan urutan jenis dengan satu nama (untuk urutan). Segmen kod berikut menggambarkan ini:

typedef tidak bertanda panjang int IduIL;

IduIL myInt = 555555555555555555;
cout << myInt <<'\n';

Keluarannya adalah 55555555555555555555. Dalam kod tersebut, IduIL telah menjadi jenis yang bermaksud "int long unsigned".

Pengikatan Berstruktur

Pengikatan berstruktur adalah ciri yang memungkinkan nama diberikan kepada sub-projek. Kod berikut menggambarkan ini untuk tatasusunan:

int arr [3] = 1, 2, 3;
automatik [x, y, z] (arr);
cout << x <<"<< y <<"<< z <<'\n';

Keluarannya adalah 1 2 3. Jadi, nilai: 1, 2, 3 telah diberi nama, x, y, z. Perhatikan penggunaan dan kedudukan kata terpelihara, automatik. Juga, perhatikan penggunaan tanda kurung persegi.

Medan Bit

Ingatan adalah urutan sel. Setiap sel mengambil bait. Juga, setiap bait terdiri daripada lapan bit. Sekumpulan bit, tidak semestinya lapan bit, boleh ditetapkan dan diubah. Kumpulan seperti itu disebut medan bit. Kumpulan-kumpulan ini akan berbaring di sebelah satu sama lain. Sekiranya kumpulan tidak akan membentuk jenis, katakan 16 bit untuk int pendek, bit padding ditambahkan. Kod berikut menggambarkan ini dengan struktur:

Tarikh struct

wk pendek yang tidak ditandatanganiHari: 3; // 3 bit
monDay pendek yang tidak ditandatangani: 6; // 6 bit
mon pendek yang tidak ditandatangani: 5; // 5 bit
pendek tidak ditandatangani tahun: 8; // 8 bit untuk 2 digit tahun
dte;
dte.wkDay = 1; dte.monDay = 2; dte.mon = 2; dte.thn = 21;
cout << dte.mon <<'/'<< dte.monDay <<'/'<< dte.yr <<'\n';

Keluarannya adalah: 2/2/21. Jumlah bit untuk wkDay, MonDay, dan mon adalah 3 + 6 + 5 = 14. Jadi, dua bit padding akan ditambahkan untuk membentuk 16 bit untuk bilangan bulat pendek 2 bait (16 bit). 8 bit seterusnya memulakan int pendek seterusnya, yang kemudian diisi dengan 8 bit padding.

Catatan: Elakkan menggunakan medan bit; menggunakannya hanya untuk penyelidikan.

Ruang Nama

Ruang nama adalah sekumpulan nama, yang tidak boleh bertentangan dengan nama yang sama dengan kumpulan nama yang lain. Program berikut menggambarkan penggunaan nama yang sama dari dua ruang nama yang berbeza, yang diterapkan di ruang nama fungsi utama ():

#sertakan
menggunakan ruang nama std;
ruang nama NS1

int myInt = 8;
float flt;

ruang nama NS2

int myInt = 9;
float flt;

int utama ()

cout << NS1::myInt << '\n';
cout << NS2::myInt << '\n';
NS1 :: flt = 2.5;
NS2 :: flt = 4.8;
cout << NS1::flt << '\n';
cout << NS2::flt << '\n';
pulangan 0;

Keluarannya adalah:

9

8

2.5

4.8

Terdapat dua nama int yang sama dan dua nama float yang sama yang bertentangan dalam kod tersebut.

Pengkhususan Templat dan Templat

Skema templat membenarkan penggunaan placeholder untuk pelbagai jenis skalar yang mungkin. Pengkhususan memilih jenis skalar tertentu. Kod berikut menggambarkan ini untuk fungsi:

#sertakan
menggunakan ruang nama std;
templat kekosongan templat (T cha, U no)

cout << "I need bread for " << cha << no << '.' << '\n';

int utama ()

func ('$', 3);
pulangan 0;

Keluarannya adalah:

“Saya memerlukan roti dengan harga $ 3."

Pek Parameter Templat

Penyusun masih melaksanakan sepenuhnya ciri ini - lihat kemudian.

Kesimpulannya

Jenis C ++ terdapat dalam dua kategori: jenis asas dan jenis sebatian. Jenis asas adalah jenis skalar. Jenis sebatian asas ialah tatasusunan, penghitungan, kelas, kesatuan, rujukan, petunjuk, dan fungsi. Jenis sebatian asas ini digunakan untuk membina jenis kompaun yang terperinci, yang merupakan typedef, ikatan berstruktur, medan bit, ruang nama, dan ciri templat.

Chrys

Cara Menggunakan Mesin Cheat GameConqueror di Linux
Artikel ini merangkumi panduan mengenai penggunaan mesin cheat GameConqueror di Linux. Ramai pengguna yang bermain permainan di Windows sering menggun...
Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...
Distro Linux Terbaik untuk Permainan pada tahun 2021
Sistem operasi Linux telah jauh dari tampilan asal, ringkas dan berasaskan pelayan. OS ini telah berkembang pesat dalam beberapa tahun kebelakangan in...