Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

Struktur dan kelas dalam C++

C++ terus menjadi bahasa minoritas untuk pengembangan tertanam tetapi umumnya diadopsi oleh pengembang ketika proyek menjadi terlalu besar untuk C untuk digunakan secara efisien. Pengembang ini biasanya beralih dari C ke C++ dan perbedaan halus antara bahasa merupakan bagian penting dari kurva belajar mereka. C++ memiliki struktur, seperti yang dimiliki C, karena mereka tidak sama. C++ memiliki kelas, yang sangat mirip dengan struktur. Artikel ini membongkar detail elemen bahasa ini.

Struktur dalam C

Struktur dalam C adalah item data komposit (objek) yang disesuaikan, yang dapat dibuat dari tipe data bawaan yang ada (int , char , dll.), bidang bit (bilangan bulat dengan ukuran bit yang ditentukan) dan struktur lainnya. Idenya adalah untuk menggabungkan sejumlah item data yang dimiliki bersama. Misalnya, struktur untuk menampung koordinat 3 dimensi mungkin terlihat seperti ini:

koordinat struktur{   float x; mengapung y; float z;};

Kode ini memberi tahu kompilator apa koordinat struct seperti. Anda kemudian dapat mendeklarasikan variabel jenis ini sebagai berikut:

lokasi koordinat struct;

Variabel lokasi bertipe koordinat struct dan bidang internalnya dapat dialamatkan menggunakan operator “titik”:

location.x =1.0;location.y =2.0;location.z =9.99;

Tentu saja, efek serupa dapat dicapai dengan menggunakan tiga float separate yang terpisah variabel dengan nama seperti location_x dll. Namun, jauh lebih mudah untuk menangani lokasi sebagai variabel tunggal yang dapat diteruskan ke fungsi dll.

Kemampuan untuk memasukkan bidang bit memberikan struktur kemampuan yang tidak tersedia di tempat lain di C. Berikut ini contohnya:

struct bitreg{   tidak mendaftar:3; tidak ditandatangani:3; polaritas yang tidak ditandatangani:2;};

Setiap bidang dalam variabel bertipe struct bitreg memiliki ukuran bit tertentu. Complier memastikan bahwa data disimpan dengan cara yang masuk akal, jadi kami mengharapkan variabel seperti itu masuk ke dalam satu byte. Selanjutnya, semua kode "bit bashing" untuk mengakses bidang dalam byte dihasilkan secara otomatis. Jadi, programmer cukup mengaksesnya sebagai berikut:

struktur kontrol bitreg; control.up =1;control.down =2;control.polarity =3;

Untuk sebagian besar, menggunakan struktur dalam C cukup mudah dan membuat kode lebih mudah dipahami tanpa berdampak pada efisiensi eksekusi. Namun, ada dua hal yang harus diperhatikan oleh pengembang tersemat:

Meskipun struktur C terlihat seperti tipe data baru, sebenarnya tidak. Tipe data biasanya memiliki rentang operasi yang dapat dilakukan padanya; ini tidak berlaku untuk struktur C. Untuk melakukan apa pun pada struktur C, selain membuat pointer ke sana, Anda perlu mengakses bidang internal. Masalah ini dibahas dalam C++.

Kelas dalam C++

Bahasa C++ memiliki sejumlah kemampuan berorientasi objek. Salah satunya adalah konsep kelas , yang memungkinkan deskripsi sesuatu yang lebih mirip tipe data baru. Sebuah variabel (biasanya disebut objek ) dapat dicontohkan dari kelas; yaitu objek dari tipe baru ini.

Kelas C++ memiliki sintaks yang hampir sama persis dengan struktur C dan beberapa kemampuan yang sangat mirip. Namun, ada beberapa perbedaan penting:

Sebagian besar fitur ini diilustrasikan dalam contoh ini:

class myclass{   char  a; int   b;public:   void fun(); kelasku(); ~kelasku();}; myclass myobj; myobj.fun();

Variabel anggota a dan b hanya dapat diakses oleh tiga fungsi anggota kesenangan() , kelassaya() dan ~kelasku() . Dua fungsi terakhir adalah konstruktor dan destruktor. Hanya menyenangkan() kemungkinan akan dipanggil dengan kode pengguna. Kode sebenarnya untuk ketiga fungsi akan didefinisikan di tempat lain yang dikaitkan dengan kelas menggunakan :: operator, jadi:

void myclass::fun(){  ...

Struktur dalam C++

Selain kelas, C++ memiliki struktur yang kompatibel dengan C. Namun, struktur C++ juga memiliki kemampuan tambahan yang sama yang dimiliki oleh kelas. Hanya satu perbedaan antara struktur dan kelas di C++. Aksesibilitas default variabel anggota dan fungsi dalam kelas adalah pribadi, seperti yang telah kita lihat; default dalam sebuah struct adalah publik. Dengan demikian, fungsionalitas dari kelas sebelumnya juga dapat diekspresikan seperti ini:

struct mystruct{   void fun(); kelasku(); ~myclass();private:   char  a; int   b;};

Menggunakan kelas dan struktur di C++

Setelah memperoleh informasi ini, Anda disarankan untuk tidak mengeksploitasinya terlalu berat. Ada banyak alasan untuk hanya menggunakan struktur untuk jenis fungsionalitas yang mereka tawarkan di C dan kelas ketika Anda membutuhkan kemampuan ekstra. Terutama, ini adalah masalah keterbacaan kode. Pengembang lain mungkin tidak begitu jelas tentang detailnya dan kode yang ditulis dengan cara "non-standar" akan membingungkan.

Prioritas utama saat Anda menulis kode adalah memastikan kode tersebut dapat dibaca (=dapat dipertahankan). Seseorang – mungkin Anda – mungkin perlu melihat kode ini dalam waktu satu tahun dan memahami fungsinya. Beberapa saran:Asumsikan bahwa orang yang akan menjaga kode Anda adalah seorang psikopat bersenjata, yang memiliki kesabaran terbatas, dan mengetahui alamat rumah Anda.


Tertanam

  1. Variabel C++, Literal dan Konstanta
  2. Kelas dan Objek C++
  3. Manajemen Memori C++:baru dan hapus
  4. C++ Warisan Publik, Dilindungi, dan Pribadi
  5. Semaphores:layanan utilitas dan struktur data
  6. Grup tanda peristiwa:layanan utilitas dan struktur data
  7. Java - Objek dan Kelas
  8. Kelas Penyimpanan di C++
  9. C++ Tanggal dan Waktu
  10. Struktur Data C++