C++

Tipe C++

Tipe C++
Entitas C++ adalah nilai, objek, referensi, fungsi, enumerator, tipe, anggota kelas, bidang bit, pengikatan terstruktur, namespace, templat, spesialisasi templat, atau paket parameter. Entitas dapat terdiri dari satu atau lebih jenis. Ada dua kategori tipe C++: tipe fundamental dan compound. Skalar adalah aritmatika atau tipe objek pointer. Tipe dasar adalah skalar, sedangkan tipe entitas lainnya adalah tipe majemuk.

Memori komputer adalah serangkaian sel. Setiap sel memiliki ukuran satu byte, biasanya ruang yang ditempati oleh karakter Eropa Barat. Ukuran suatu objek diberikan dalam byte. Artikel ini memberikan ringkasan jenis C++. Anda harus sudah memiliki pengetahuan dasar tentang C++, untuk memahami artikel ini.

Isi Artikel

- Tipe Dasar
- Cara Membangun Tipe Majemuk
- Array
- Pencacahan
- Kelas
- Persatuan
- Referensi
- Fungsi
- Jenis Senyawa Lainnya
- Kesimpulan

Tipe Dasar

Tipe dasar adalah tipe skalar.

bool

Tipe Boolean atau tipe bool memiliki nilai true atau false untuk 1 atau 0. Benar atau salah menempati satu byte.

char, char yang tidak ditandatangani, dan char yang ditandatangani

Karakter biasanya untuk satu karakter Eropa Barat Western. Biasanya menempati satu byte. Ada juga karakter yang tidak ditandatangani dan ditandatangani, yang masing-masing merupakan bilangan bulat delapan bit. Karakter yang tidak ditandatangani tidak melibatkan nilai negatif, sedangkan karakter yang ditandatangani melibatkan nilai negatif. Jenis nilai yang dipegang oleh char tergantung pada kompiler dan mungkin hanya karakter yang tidak ditandatangani. Ketiga jenis karakter ini disebut, tipe karakter sempit, dan masing-masing menempati satu byte.

Bilangan bulat

Ada lima tipe integer standar yang tidak ditandatangani dan lima tipe integer standar yang ditandatangani. Lima tipe integer unsigned adalah: “unsigned char”, “unsigned short int”, “unsigned int”, “unsigned long int”, dan “unsigned long int”. Lima tipe integer bertanda yang sesuai adalah: “signed char”, “short int”, “int”, “long int”, dan “long long int”.

"unsigned char" adalah tipe yang sama dengan tipe karakter yang sempit (lihat di atas). "signed char" adalah tipe lain dari tipe karakter sempit (lihat di atas).

Dengan kompiler g++, “unsigned char” atau “signed char” menempati satu byte; "unsigned short int" atau "short int" menempati dua byte; "unsigned int" atau "int" menempati empat byte; "unsigned long int" atau "long int" menempati 8 byte; "unsigned long long int" atau "long long int" masih menempati 8 byte (sampai sekarang).

char16_t, char32_t, wchar_t

Saat berhadapan dengan karakter Eropa Barat, tipe karakter sudah cukup dalam banyak situasi. Namun, ketika berhadapan dengan bahasa Cina dan bahasa Timur lainnya, char16_t, atau char32_t, atau wchar_t diperlukan. Dengan kompiler g++, char16_t menempati dua byte; char32_t menempati empat byte dan wchar_t juga menempati empat byte.

Tipe bool, char, char16_t, char32_t, wchar_t, bertanda, dan tidak bertanda, membentuk himpunan lain, yang disebut tipe integral (bilangan bulat).

Pada titik ini dalam artikel, dua tipe kolektif telah disebutkan: tipe karakter sempit dan tipe integral.

Jenis Titik Mengambang

Asumsikan bahwa angka 457.000 dan 457.230 adalah bacaan yang sama, diukur dengan dua alat ukur yang berbeda. 457.230 lebih tepat daripada 457.000 karena nilainya lebih detail (melibatkan tempat yang lebih kecil: + 200 ditambah 30). Bilangan floating-point adalah bilangan dengan bagian pecahan (desimal)). Meskipun angka di komputer adalah urutan bit, beberapa angka floating-point lebih tepat daripada yang lain.

Beberapa alat ukur melakukan pengukuran dalam langkah-langkah minimum, katakanlah 10 unit. Instrumen semacam itu akan memiliki bacaan berikut: 10, 20, 30, 40,… 100, 110, 130, 140,… 200, 210, 220, 230, 240, dan seterusnya. Meskipun angka di komputer adalah urutan bit, angka floating-point berkisar dalam beberapa langkah minimum (jauh lebih kecil dari 10 unit).

C++ memiliki tiga tipe floating-point, yaitu: float, double, dan long double. Untuk setiap compiler, double harus memiliki presisi yang lebih tinggi dari float atau setidaknya float; double panjang harus memiliki presisi yang lebih tinggi dari double atau setidaknya double.

Ada nama kolektif ketiga: tipe aritmatika. Ini adalah nama untuk tipe integral dan floating-point. Perhatikan bahwa ini juga nama untuk semua jenis skalar, seperti yang dijelaskan sejauh ini.

Dengan kompiler g++, jumlah byte untuk float adalah empat; jumlah byte untuk double adalah delapan; jumlah byte untuk double panjang adalah enam belas.

Tipe kosong

Dengan kompiler g++, ukuran tipe void adalah satu byte. Byte secara resmi tidak memiliki bit, artinya lokasinya memiliki konten kosong.

Cara Membangun Tipe Majemuk

Tipe majemuk adalah tipe non-fundamental. Ini berarti bahwa tipe senyawa adalah tipe non-skalar. Bagian ini menjelaskan dasar-dasar tipe majemuk.

Array

Segmen kode berikut menunjukkan larik int dan larik karakter:

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

Pencacahan

Enumerasi adalah tipe, dengan konstanta bernama named. Perhatikan segmen kode berikut:

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

Outputnya adalah: 4. Baris pertama segmen kode adalah pencacahan, dan a, b, atau c adalah pencacah.

Kelas

Kelas adalah unit umum dari mana banyak objek dari unit umum yang sama dapat dibuat (dicontohkan). Program berikut menunjukkan sebuah kelas dan dua objek, yang dibuat darinya:. Objek seperti itu berbeda dari objek skalar.

#termasuk
menggunakan namespace std;
kelas TheCla

publik:
int bilangan = 5;
int fn()

kembali nomor;

;
int utama()

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

Outputnya adalah: 5 5. Nama kelasnya adalah TheCla, dan nama kedua objek tersebut adalah obj1 dan obj2. Perhatikan titik koma tepat setelah deskripsi (definisi) kelas. Perhatikan bagaimana kedua objek dipakai dalam fungsi main()().

Catatan: num adalah anggota data dan fn adalah fungsi anggota.

Persatuan

struktur

Sebuah struct seperti array tetapi alih-alih memiliki pasangan indeks/nilai, ia memiliki pasangan nama/nilai. Nama-nama dapat ditulis dalam urutan apapun. Program berikut menunjukkan struct dan penggunaannya:

#termasuk
menggunakan namespace std;
struct TheCla

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

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

Outputnya adalah:

5, 2.3,

Nama structnya adalah TheCla. obj1 dan obj2 adalah dua objek berbeda dari struct.

Persatuan

Program berikut menunjukkan serikat pekerja dan penggunaannya:

#termasuk
menggunakan namespace std;
serikat TheCla

int nomor;
mengapung flt = 2.3;
karakter ch;
obj1, obj2;
int utama()

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

Outputnya adalah: 2.3. Union mirip dengan struct. Perbedaan utama antara struct dan union adalah, untuk struct, hanya satu anggota yang dapat memiliki nilai (diinisialisasi) pada satu waktu. Dalam program di atas, anggota, flt memiliki nilai 2.3. Masing-masing anggota lain, num atau ch, hanya dapat memiliki nilai berikutnya jika nilai flt ditinggalkan.

Referensi

Referensi adalah sinonim untuk pengidentifikasi. Segmen kode berikut menunjukkan cara mendapatkan referensi ke pengidentifikasi:

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

Outputnya adalah: 5 5 5. ref1 dan ref2 adalah sinonim untuk id.

Referensi nilai dan Referensi nilai

Referensi di atas adalah referensi nilai. Kode berikut menunjukkan referensi nilai:

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

Outputnya adalah: 5. Referensi ini dibuat tanpa mengidentifikasi lokasi apa pun di memori. Untuk mencapai ini, ganda & diperlukan, i.e., &&.

penunjuk

Pointer sebenarnya bukan entitas C++. Namun, ini memberikan skema yang lebih baik untuk menangani referensi. Kode berikut menunjukkan bagaimana pointer dapat dibuat:

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

Outputnya adalah: 5. Perhatikan perbedaan nama antara ptdId dan ptdId. ptdId adalah objek runcing dan ptrId adalah objek penunjuk. &ptdId mengembalikan alamat objek runcing yang ditetapkan ke ptrId. Untuk mengembalikan nilai objek runcing, gunakan *ptrId.

Fungsi

Fungsi Dasar dan Panggilannya

Kode berikut menunjukkan definisi fungsi dasar dan panggilannya:

#termasuk
menggunakan namespace std;
int fn(int angka)

cout<<"seen"<<'\n';
kembali nomor;

int utama()

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

Keluarannya adalah

definisi fungsi

5

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

Referensi dan Pointer ke Fungsi

&fn mengembalikan alamat dalam memori fungsi yang bernama fn. Pernyataan berikut mendeklarasikan pointer ke suatu fungsi:

int (*fungsi)();

Di sini, func adalah nama penunjuk ke fungsi. Pasangan tanda kurung pertama membedakan penunjuk fungsi ini dari penunjuk objek skalar. func dapat dibuat untuk menampung alamat suatu fungsi yang diidentifikasi oleh fn, sebagai berikut:

fungsi = &fn;

Program berikut menempatkan referensi fungsi dan pointer ke dalam tindakan:

#termasuk
menggunakan namespace std;
int fn(int angka)

/* beberapa pernyataan */
kembali nomor;

int utama()

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

Outputnya adalah: 5. Perhatikan bahwa baik fn dan func masing-masing memiliki parameter int dalam deklarasi.

Jenis Senyawa Lainnya

Jenis senyawa dasar di atas adalah senyawa itu sendiri. Mereka juga digunakan untuk membangun jenis senyawa yang rumit.

typedef

Kata cadangan typedef digunakan untuk mengganti urutan tipe dengan satu nama (untuk urutan). Segmen kode berikut menggambarkan hal ini:

typedef unsigned long int IduIL;

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

Outputnya adalah 555555555555555555. Dalam kode, IduIL telah menjadi tipe yang merupakan singkatan dari "unsigned long int".

Pengikatan Terstruktur

Pengikatan terstruktur adalah fitur yang memungkinkan nama diberikan ke subobjek. Kode berikut mengilustrasikan ini untuk array:

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

Outputnya adalah 1 2 3. Jadi, nilai: 1, 2, 3 telah diberi nama, x, y, z. Perhatikan penggunaan dan posisi kata yang dicadangkan, otomatis. Perhatikan juga penggunaan tanda kurung siku.

Bit-Field

Memori adalah urutan sel. Setiap sel membutuhkan satu byte. Juga, setiap byte terdiri dari delapan bit. Sekelompok bit, tidak harus delapan bit, dapat diatur dan diubah. Grup seperti itu disebut bit-field. Kelompok-kelompok ini akan terletak bersebelahan. Jika grup tidak akan membuat tipe, katakan 16 bit untuk int pendek, bit padding ditambahkan. Kode berikut mengilustrasikan ini dengan struct:

tanggal struktur

minggu pendek unsigned : 3; //3 bit
unsigned short monDay : 6; ///6 bit
unsigned short mon : 5; ///5 bit
unsigned short thn : 8; ///8 bit untuk 2 digit tahun
tanggal;
dte.hari minggu = 1; dte.senin = 2; dte.sen = 2; dte.tahun = 21;
cout << dte.mon <<'/'<< dte.monDay <<'/'<< dte.yr <<'\n';

Outputnya adalah: 2/2/21. Jumlah total bit untuk wkDay, MonDay, dan mon adalah 3 + 6 + 5 = 14. Jadi, dua bit padding akan ditambahkan untuk membuat 16 bit untuk bilangan bulat pendek 2 byte (16 bit). 8 bit berikutnya memulai int pendek berikutnya, yang kemudian diisi dengan 8 bit padding.

Catatan: Hindari penggunaan bidang bit; gunakan hanya untuk penelitian.

ruang nama

Namespace adalah kumpulan nama, yang tidak boleh bertentangan dengan nama yang sama dari kumpulan nama lainnya. Program berikut mengilustrasikan penggunaan nama yang sama dari dua ruang nama yang berbeda, diterapkan di ruang nama fungsi main():

#termasuk
menggunakan namespace std;
ruang nama NS1

int myInt = 8;
mengapung flt;

ruang nama NS2

int myInt = 9;
mengapung 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';
kembali 0;

Outputnya adalah:

9

8

2.5

4.8

Ada dua nama int yang sama yang saling bertentangan dan dua nama float yang sama yang saling bertentangan dalam kode.

Template dan Spesialisasi Template

Skema template memungkinkan penggunaan placeholder untuk kemungkinan jenis skalar yang berbeda. Spesialisasi adalah memilih jenis skalar tertentu. Kode berikut mengilustrasikan ini untuk suatu fungsi:

#termasuk
menggunakan namespace std;
template void func (T cha, U no)

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

int utama()

fungsi('$', 3);
kembali 0;

Outputnya adalah:

“Saya butuh roti seharga $3.”

Paket Parameter Template

Kompiler masih menerapkan fitur ini sepenuhnya - lihat nanti.

Kesimpulan

Tipe C++ ada dalam dua kategori: tipe dasar dan tipe gabungan. Tipe dasar adalah tipe skalar. Jenis senyawa dasar adalah array, enumerasi, kelas, serikat pekerja, referensi, pointer, dan fungsi. Jenis senyawa dasar ini digunakan untuk membangun jenis senyawa yang diuraikan, yaitu typedef, binding terstruktur, bit-field, namespace, dan fitur template.

Chrys

Cara Meningkatkan FPS di Linux?
FPS adalah singkatan dari Bingkai per detik. Tugas FPS adalah mengukur kecepatan bingkai dalam pemutaran video atau pertunjukan game. Dengan kata sede...
Game Lab Aplikasi Oculus Teratas
Jika Anda adalah pemilik headset Oculus maka Anda harus tahu tentang sideloading. Sideloading adalah proses menginstal konten non-toko di headset Anda...
10 Game Teratas untuk Dimainkan di Ubuntu
Platform Windows telah menjadi salah satu platform yang mendominasi untuk bermain game karena persentase besar dari game yang berkembang saat ini untu...