Memahami Kelas Abstrak di C++ Dengan Kode Contoh

Sedang Trending 1 minggu yang lalu
ARTICLE AD BOX

Dalam pemrograman, kelas absurd di C++ mempunyai setidaknya satu kegunaan virtual murni menurut definisi. Dengan kata lain, suatu kegunaan nan tidak mempunyai definisi. Keturunan kelas absurd kudu mendefinisikan kegunaan virtual murni; jika tidak, subkelas bakal menjadi kelas absurd tersendiri.

IKLAN

GULIR UNTUK MELANJUTKAN KONTEN

Kelas absurd digunakan untuk mengekspresikan konsep-konsep luas nan darinya kelas-kelas nan lebih konkrit dapat diturunkan. Objek jenis kelas absurd tidak dapat dibuat. Namun, untuk mengabstraksi jenis kelas, Anda dapat menggunakan pointer dan referensi. Deklarasikan setidaknya satu fitur personil virtual murni saat membikin kelas abstrak. Sintaks specifier murni (= 0) digunakan untuk mendeklarasikan kegunaan virtual.

Lihatlah contoh dalam kegunaan virtual. Tujuan dari kelas ini adalah untuk menyediakan fungsionalitas umum untuk bentuk, namun objek bertipe corak terlalu umum untuk dapat berguna. Oleh lantaran itu, Shape merupakan kandidat nan cocok untuk kelas abstrak:

Sintaksis:

Nama kelas C-lass //kelas abstrak

{

//data personil

publik:

//fungsi virtual murni

/* Anggota lain */

};

Karakteristik Kelas Abstrak

Tipe kelas Abstrak tidak dapat dipakai, tetapi pointer dan referensi ke kelas tersebut dapat dihasilkan.

Selain kegunaan dan variabel normal, kelas absurd mungkin mempunyai kegunaan virtual murni.

Kelas absurd sebagian besar digunakan untuk transmisi, memungkinkan kelas turunan mengakses antarmuka mereka. Semua amal murni kudu dilaksanakan oleh kelas-kelas nan mewarisi dari Kelas Abstrak.

Mengapa Kita Tidak Bisa Membuat Objek Kelas Abstrak?

Saat kita membangun kegunaan virtual murni di Abstrak, kita mencadangkan slot di VTABLE (dibahas di topik sebelumnya) untuk suatu fungsi, tapi kita tidak memasukkan alamat apa pun di slot itu. Akibatnya, VTABLE tidak bakal selesai.

Karena VTABLE untuk kelas Abstrak tidak ada, kompiler bakal menolak mengizinkan Anda membikin objek untuknya dan bakal menampilkan pesan kesalahan jika Anda mencobanya.

Bentuk kelas {

publik:

Area virtualint() = 0; // Fungsi virtual murni dideklarasikan sebagai berikut.

// Berfungsi untuk mengatur lebar.

voidsetval_width(int w) {

lebar = w;

}

// Berfungsi untuk mengatur ketinggian.

voidsetval_height(int h) {

tinggi = jam;

}

terlindung:

lebar int;

tinggi int;

};

Area () dideklarasikan dengan specifier murni (= 0), nan merupakan satu-satunya perbedaan antara deklarasi ini dan deklarasi sebelumnya.

Implementasi kelas absurd sebagai berikut

Memasukkan:

Abstrak_Kelas_di_cpp_1Abstrak_Kelas_dalam_cpp_2.

Keluaran:

Abstrak_Kelas_dalam_cpp_3

Pembatasan Kelas Abstrak

Kelas absurd tidak dapat digunakan untuk tujuan berikut:

  • Data alias variabel anggota
  • Bentuk perdebatan
  • Jenis keluaran fungsi
  • Konversi nan dilakukan secara eksplisit

Hasilnya tidak diketahui apakah kegunaan kelas absurd Object () { (native code) } secara definitif alias tidak langsung memanggil metode virtual murni. Sebaliknya, konstruktor dan destruktor untuk grup absurd mempunyai keahlian untuk memanggil kegunaan personil lainnya.

Definisi Virtualitas Murni

Fungsi virtual murni dapat ditentukan secara singkat di kelas Abstrak, nan bakal digunakan berbareng oleh semua kelas turunan. Anda tetap tidak dapat membikin objek kelas Abstrak.

Selanjutnya, kegunaan Virtual Murni kudu ditentukan secara terpisah dari penjelasan kelas. Kompiler bakal memunculkan kesalahan jika Anda mendefinisikannya dalam penjelasan kelas. Mendefinisikan inline virtual murni merupakan pelanggaran hukum.

Memasukkan:

Abstrak_Kelas_di_cpp_4.

Keluaran:

Abstrak_Kelas_dalam_cpp_5

Betapa Pentingnya Abstraksi dalam Kehidupan Sehari-hari

Contoh abstraksi kehidupan nyata lainnya adalah mesin ATM; kita semua menggunakan mesin ATM untuk melakukan operasi seperti penarikan tunai, pengiriman uang, pengambilan mini-statement, dan sebagainya, namun kita tidak mempunyai akses ke info internal ATM. Abstraksi info dapat digunakan untuk melindungi info agar tidak diakses oleh metode nan tidak sah.

Perbedaan Antara Antarmuka dan Kelas Abstrak

Antarmuka

Kelas Abstrak

Hanya sebuah antarmuka nan dapat diwarisi oleh sebuah antarmuka

Kata kunci Extended memungkinkan kelas absurd untuk mewarisi kelas lain dan menerapkan antarmuka.

Satu-satunya langkah untuk mengimplementasikan antarmuka adalah dengan menggunakan kata kunci implementasi.

Kata kunci extends dapat digunakan untuk mewarisi kelas abstrak

Kesimpulan

Kata kunci abstract kudu digunakan ketika mendeklarasikan kelas abstract. Ini dapat mencakup metode absurd dan non-abstrak. Ini mungkin juga mencakup konstruktor dan metode statis. Ia dapat mempunyai metode final, nan mencegah subkelas mengubah isi metode. Kelas absurd dalam C++ adalah kelas nan mempunyai setidaknya satu kegunaan virtual murni menurut definisi. Dengan kata lain, suatu kegunaan nan tidak mempunyai definisi. Keturunan kelas absurd kudu mendefinisikan kegunaan virtual murni; jika tidak, subkelas bakal menjadi kelas absurd tersendiri. Beberapa karakter krusial dari kelas absurd dengan contoh nan sesuai dan juga kegunaan virtual telah dibahas. Kelas absurd adalah kelas nan dinyatakan abstrak; itu mungkin mengandung alias tidak mengandung metode abstrak. Subkelas dari kelas absurd dapat dibentuk, tetapi tidak dapat dibuat instance-nya. Ketika kelas absurd disubkelaskan, subkelas tersebut biasanya menawarkan penerapan untuk semua metode absurd kelas induknya.

Tidak mungkin membikin instance kelas abstrak. Metode dan akses absurd dapat ditemukan di kelas abstrak. Karena kedua pengubah mempunyai arti nan berlawanan, tidak mungkin mengubah kelas absurd dengan pengubah tersegel.

Pada tulisan ini, Anda telah mempelajari tentang tumpukan, implementasi, operasi dengan sintaksis beserta contohnya. Kami sebenarnya dapat membicarakan lebih banyak tentang topik ini. Jadi, jika Anda mempunyai pertanyaan untuk kami, tinggalkan di bagian komentar tulisan ini, dan master kami bakal menjawabnya sesegera mungkin!

Apa nan membikin Anda betul-betul menonjol sebagai seorang ahli nan sukses adalah skill di bagian apa pun. Jadi, untuk mendapatkan lebih banyak skill dalam bahasa pemrograman C++, Anda dapat berasosiasi dengan Full Stack Developer Simplilearn kami – MERN Stack. Selain itu, kami juga menyediakan pilihan kursus unik secara cuma-cuma untuk semua pelajar.

FAQ

1. Apa nan dimaksud dengan kelas absurd di C++?

Kelas absurd dalam C++ adalah kelas nan tidak dapat dibuat instance-nya sendiri dan dirancang untuk menjadi kelas dasar bagi kelas lain. Ini berisi setidaknya satu kegunaan virtual murni, nan dideklarasikan dengan menetapkan 0. Misalnya:

class AbstractClass {public: virtual void pureVirtualFunction() = 0; // Pure virtual function};

Kelas nan diturunkan dari kelas absurd kudu mengimplementasikan kegunaan virtual murni agar dapat dipakai.

2. Mengapa kita menggunakan kelas absurd di C++?

Kelas absurd digunakan di C++ untuk mendefinisikan antarmuka dan menerapkan perjanjian untuk kelas turunan. Mereka memungkinkan Anda menentukan serangkaian metode nan kudu diterapkan oleh subkelas mana pun, memastikan antarmuka nan konsisten dan mendorong penggunaan kembali kode dan polimorfisme.

3. Bagaimana Anda mendefinisikan dan mengimplementasikan kegunaan virtual murni di kelas abstrak?

Fungsi virtual murni didefinisikan dalam kelas absurd dengan menetapkan 0 pada deklarasi kegunaan virtual. Itu kudu ditimpa oleh kelas turunan mana pun. Berikut ini contohnya:

class AbstractClass {public: virtual void pureVirtualFunction() = 0; // Pure virtual function};class DerivedClass : public AbstractClass {public: void pureVirtualFunction() override { // Implementation of the pure virtual function }};

4. Bisakah kelas absurd mempunyai kegunaan virtual dan variabel personil nan tidak murni?

Ya, kelas absurd dapat mempunyai kegunaan virtual non-murni dan variabel anggota. Fungsi virtual nan tidak murni dapat memberikan perilaku default nan diwarisi alias diganti oleh kelas turunan. Pada saat nan sama, variabel personil dapat menyimpan info umum nan diturunkan dari kelas-kelas nan dibagikan. Misalnya:

class AbstractClass {public: virtual void pureVirtualFunction() = 0; // Pure virtual function virtual void nonPureVirtualFunction() { // Default implementation } void concreteFunction() { // Concrete function implementation }protected: int memberVariable;};

5. Apa nan terjadi jika kelas turunan tidak mengesampingkan semua kegunaan virtual murni dari kelas abstrak?

Jika kelas turunan tidak mengesampingkan semua kegunaan virtual murni dari kelas abstrak, maka kelas tersebut menjadi kelas absurd dan tidak dapat dipakai. Itu kudu menyediakan penerapan konkrit untuk semua kegunaan virtual murni nan diwarisi untuk membikin instance kelas turunan. Misalnya:

class AbstractClass {public: virtual void pureVirtualFunction1() = 0; virtual void pureVirtualFunction2() = 0;};class PartiallyDerivedClass : public AbstractClass {public: void pureVirtualFunction1() override { // Implementation of pureVirtualFunction1 } // pureVirtualFunction2 is not overridden, so PartiallyDerivedClass is abstract};class FullyDerivedClass : public PartiallyDerivedClass {public: void pureVirtualFunction2() override { // Implementation of pureVirtualFunction2 }};
Selengkapnya
Sumber Kabar SekitarKita
Kabar SekitarKita