Perbezaan antara Kelas dan Struktur Perbezaan Antara

Anonim

Sebelum kita memahami perbezaan antara Kelas dan Struktur, kita perlu tahu beberapa konsep asas yang berkaitan dengan mereka. Tanpa memahami konsep, sukar untuk memahami perbezaan antara kedua-dua.

Apakah Kelas dan Objek:

Ini adalah dua konsep penting yang berkaitan dengan Pemrograman Berorientasikan Objek, dan mereka membentuk asas untuk merangka fungsi dan data yang lulus ke fungsi lain. Untuk pemahaman yang lebih baik, kita boleh mengaitkannya dengan contoh kehidupan sebenar. Kelas boleh dianggap sebagai kedai, dan Objek boleh menjadi salah satu kedai khusus, seperti kedai runcit, alat tulis, buah, dan sebagainya. Semua objek berkongsi sifat umum kelas utama - kedai -, dan seterusnya, objek mungkin mempunyai ciri eksklusifnya sendiri seperti reka bentuk, pencahayaan, dan lain-lain. Melalui objek, kita boleh menggunakan kelas ini; mereka membentuk contoh kelas.

Sintaks bagi Kelas

Kedai Kelas {

perkara rentetan awam;

rekaan tali awam;

}

Sintaks Objek

Kedai runcit = Kedai baru ();

Station Stationery = Store baru ();

Apa itu Struktur?

Struktur hanya termasuk data, dan oleh itu, adalah berguna dalam membina keperluan data individu melalui objek Struct. Tidak seperti kelas, ia tidak berfungsi. Inilah sintaksnya:

struct grocery_entrance {

char entrance_name [50];

int entrance_size;

} grocery_entrance;

Semua kedai boleh menggunakan Struct 'masuk' dengan nama dan saiz individu.

Apa itu Warisan?

Ia serupa dengan bagaimana seorang anak mewarisi harta bapanya dan, sebaliknya, anak itu juga boleh menambah beberapa harta miliknya sendiri. Kelas ini boleh menjadi kelas asas atau kelas yang diturunkan, di mana bekas boleh diambil sebagai asas untuk membentuk yang terakhir. Kelas yang diperolehi menambah beberapa sifat lain untuk dirinya sendiri selain dari apa yang diperolehnya dari kelas asas. Apabila kami mempertimbangkan contoh di atas, kedai runcit masih boleh diperolehi ke kedai runcit tertentu, seperti kedai runcit XYZ.

Sekarang kita sudah biasa dengan konsep asas, kita boleh pergi ke perbezaan sebenar antara Kelas dan Struktur.

Bagaimana Mereka Berbeza?

  • Re-usability: Oleh kerana Kelas membentuk kerangka asas, mereka boleh digunakan semula; Struktur, bagaimanapun, adalah unsur-unsur individu dengan sifat tertentu, sehingga mereka tidak boleh digunakan semula. Sebagai contoh, kelas kedai runcit boleh digunakan untuk apa-apa jenis kedai runcit, tetapi Struct grocery_entrance khusus untuk itu sahaja dan tidak ada gunanya menggunakan semula dalam kelas lain.
  • Kebolehlihatan: Semua fungsi dalam Kelas boleh didapati secara umum untuk Objeknya.Sebagai contoh, kami mempunyai fungsi yang dinamakan 'perkara' di bawah kedai Kelas '. Fungsi 'perkara' dapat dilihat oleh semua Objeknya, seperti 'kedai runcit,' alat tulis alat tulis ', dan lain-lain. Penglihatan sedemikian tidak mungkin dengan Structs sebagai data struktur terhad kepada dirinya sendiri dan tidak dapat dilihat oleh Struktur lain. Untuk membuat perkara yang jelas, kami boleh mengatakan bahawa data 'grocery_entrance' tidak dapat dilihat secara umum oleh semua kedai lain.
  • Lulus mengikut Rujukan & Lulus mengikut Nilai: Lulus dengan Rujukan hanya menghantar lokasi memori dan bukannya data sebenar kepada fungsi. Ini bermakna apabila setiap kali nilai berubah, perubahan itu ditunjukkan dalam fungsi yang sepadan. Pas dengan nilai, sebaliknya, hanya menghantar nilai kepada fungsi. Dalam kes ini, perubahan dalam nilai selepas ia dihantar tidak akan dapat dilihat dalam fungsi tersebut. Kelas menggunakan lulus melalui rujukan, dan Struct menggunakan nilai lulus.
  • Warisan: Kelas boleh diwarisi lagi untuk membentuk sub-kelas, tetapi Structs tidak dapat menggunakan warisan. Contohnya, Kedai Kelas memberi fungsinya ke kedai runcit subkelas '. Tetapi Struktur 'grocery_entrance' tidak boleh mewarisi sebarang fungsi. Kita boleh mengatakan bahawa tidak ada konsep seperti sub-struct di sini.
  • Penglihatan lalai: Semua ahli Kelas disimpan sebagai entiti swasta secara lalai, sedangkan ahli Struktur disimpan sebagai entiti awam secara lalai.
  • Saiz Kelas dan Struktur kosong: Kelas menggunakan saiz 1 Byte walaupun ia kosong, sedangkan Struct tidak menggunakan sebarang memori apabila kosong. Ini bermakna kita boleh mengatakan bahawa saiz satu struktur kosong sama dengan 0 Bytes.
  • Kutipan sampah: Pengumpulan sampah adalah mungkin dengan Kelas, kerana mereka menggunakan lulus dengan rujukan. Oleh itu, lebih mudah untuk melakukan pembersihan di satu lokasi di mana data disimpan. Sebaliknya, kutipan sampah tidak boleh dilakukan dengan Struct, kerana ia menggunakan lulus nilai dan data tersebar di lokasi yang berbeza.
  • Pengurusan memori: Oleh kerana Kelas membenarkan koleksi sampah, pengurusan memori juga berkesan; Walau bagaimanapun, ia tidak berkesan dengan Struktur.
  • Pembina: Pembina biasanya menjalankan kelas dengan nilai tertentu. Kita boleh melihatnya seperti sesuatu yang telah dimulakan dengan nilai-nilai. Jika kelas baru perlu diwujudkan, pembina dipanggil untuk mengagihkan ingatan untuk contoh itu. Kita juga boleh lulus nilai sebagai argumen sambil memanggil pembina. Marilah kita pergi ke perbincangan sebenar kita sekarang. Kelas membenarkan pembina semua jenis, seperti dengan atau tanpa argumen, sedangkan struktur hanya membenarkan pembina dengan argumen, i. e. pembina parameter.
  • Destructor: A destructor dipanggil setiap kali kita perlu memadam contoh kelas. Pemusnahan, pada gilirannya, memadamkan contoh itu dan membebaskan memori. Kelas boleh menggunakan destructor, sedangkan Struct tidak boleh.
  • Pembolehubah Ahli Inisialisasi: Dalam Kelas, kita dapat memulakan pembolehubah ahli secara langsung; permulaan seperti itu tidak mungkin dengan Structs.
  • Penciptaan Objek: Sintaks umum untuk penciptaan objek dalam kelas adalah:

Demo obj = Demo baru ();

Ini bermakna kita mesti menggunakan kata kunci 'baru' semasa membuat objek kelas.Ini tidak diperlukan semasa membuat objek Structs. Lihat saja sintaks mereka:

Demo obj;

Ia berfungsi dengan sempurna walaupun tanpa kata kunci 'baru'.

Kapan Menggunakan Kelas dan Kapan Menggunakan Struktur?

Oleh kerana Kelas lebih fleksibel dalam menyampaikan data dan fungsi bersama-sama, kita boleh melakukannya apabila objek yang digunakan adalah rumit dan besar. Dalam contoh kami, Mall boleh menggunakan 'kedai' kelas untuk menyatakan sistem dengan cara yang lebih baik. Struktur, bagaimanapun, adalah terhad kepada objek yang lebih kecil, kerana ia adalah kurang efektif daripada Kelas. Oleh itu, jika anda merancang kedai anda sendiri, Structs adalah pilihan yang lebih baik.

Bagaimana Mengkonversi Struktur ke Kelas dan Naib Versa?

Anda mungkin pernah mendengar istilah 'tinju' dan 'unboxing' untuk menukar Struktur ke Kelas, dan sebaliknya. Walaupun ini adalah proses yang berkesan untuk membantu kita dalam penukaran, mereka perlu ditangani dengan berhati-hati. Oleh kerana ini memberi kesan langsung kepada lokasi memori, terdapat kesan yang besar terhadap prestasi sistem kami. Lebih-lebih lagi, ia memberi kesan kepada proses pengumpulan sampah dan menyebabkan ketidakcekapan sistem keseluruhan. Oleh itu, gunakan penukaran ini hanya apabila diperlukan.

Marilah kita melihat perbezaan yang disebut di atas dalam bentuk jadual.

S. Tidak Konsep Perbezaan
Kelas Struktur
1 Keupayaan semula Sepenuhnya digunakan semula Tidak boleh digunakan
2 Semua fungsi Kelas dapat dilihat oleh objeknya Data Objek Struktur tidak dapat dilihat oleh objek lain yang sama Struktur 3
Melalui Rujukan & lulus oleh Nilai > Menggunakan Pas oleh Rujukan Menggunakan Pas dengan Nilai 4 Warisan
Fungsi kelas boleh diwarisi oleh subkelasnya; membolehkan warisan Jangan sekali-kali membenarkan pewarisan 5 Kebolehlihatan Lalai
Semua ahli Kelas secara peribadi Semua ahli Struct adalah secara umum 6 Saiz Apabila Kosongkan
Saiz Kelas kosong ialah 1 Byte Saiz Struktur kosong adalah 0 Bytes 7 Pengumpulan Sampah
Seperti menggunakan pass by reference, pengumpulan sampah mungkin Oleh kerana menggunakan nilai lulus, pengumpulan sampah tidak mungkin 8 Pengurusan Memori
Kemudahan proses pengumpulan sampah membantu dalam pengurusan memori yang berkesan pengurusan memori 9 Constructors
Membolehkan pembangun semua jenis, seperti dengan atau tanpa parameter Hanya membenarkan pembangun parameteralis 10 Destructors
Dapat menggunakannya gunakannya 11 Pembolehubah Ahli Inisialisasi
Membolehkan pengaktifan langsung bagi pembolehubah ahli Tidak membenarkan inisialisasi perkataan langsung bagi pembolehubah anggota 12 < Penciptaan Objek Adalah wajib menggunakan kata kunci 'baru' semasa penciptaan objek
Pilihan untuk menggunakan kata kunci 'baru' semasa membuat objek 13 Kapan Kegunaan? Lebih baik untuk objek yang lebih besar dan kompleks di mana warisan diperlukan
Lebih baik untuk objek yang lebih kecil dan mudah di mana warisan kurang penting. Kami hampir menutup semua perbezaan antara Kelas dan Struktur, dan jika anda merasakan ada sesuatu yang hilang, sila beritahu kami. Mari belajar bersama dan memanfaatkan sepenuhnya pengetahuan itu!