[ad_1]
Dalam pemrograman, kelas abstrak di C++ mempunyai setidak-tidaknya satu fungsi digital murni menurut definisi. Dengan kata lain, suatu fungsi yang sepertinya tidak mempunyai definisi. Keturunan kelas abstrak harus segera mendefinisikan fungsi digital murni; jika sepertinya tidak, subkelas akan menjadi kelas abstrak tersendiri.
ADVERTISEMENT
SCROLL TO RESUME CONTENT
Kelas abstrak digunakan untuk mengekspresikan konsep-konsep luas yang darinya kelas-kelas yang lebih konkrit bisa diturunkan. Objek tipe kelas abstrak sepertinya tidak bisa dibuat. Tetapi, untuk mengabstraksi tipe kelas, Anda bisa memakai pointer serta referensi. Deklarasikan setidak-tidaknya satu fitur anggota digital murni saat membuat kelas abstrak. Sintaks specifier murni (= 0) digunakan untuk mendeklarasikan fungsi digital.
Lihatlah contoh dalam fungsi digital. Tujuan dari kelas ini yaitu untuk menyediakan fungsionalitas umum untuk bentuk, tetapi objek bertipe bentuk terlalu umum untuk bisa berguna. Untuk alasan itu, Form merupakan kandidat yang cocok untuk kelas abstrak:
Sintaksis:
Nama kelas C-lass //kelas abstrak
{
//information anggota
publik:
//fungsi digital murni
/* Anggota lain */
};
Karakteristik Kelas Abstrak
Tipe kelas Abstrak sepertinya tidak bisa dipakai, namun pointer serta referensi ke kelas itu bisa dihasilkan.
Selain fungsi serta variabel commonplace, kelas abstrak mungkin saja mempunyai fungsi digital murni.
Kelas abstrak sebagian besar digunakan untuk transmisi, memungkinkan kelas turunan mengakses antarmuka mereka. Semua kebajikan murni harus segera diadakan oleh kelas-kelas yang mewarisi dari Kelas Abstrak.
Mengapa Kita Sepertinya tidak Dapat Membuat Objek Kelas Abstrak?
Saat kita membangun fungsi digital murni di Abstrak, kita mencadangkan slot di VTABLE (dibahas di topik sebelumnya) untuk suatu fungsi, tapi kita sepertinya tidak memasukkan alamat apa pun di slot tersebut. Akibatnya, VTABLE sepertinya tidak akan selesai.
Sebab VTABLE untuk kelas Abstrak tidak ada lagi, kompiler akan menolak mengizinkan Anda membuat objek untuknya serta akan menampilkan pesan kesalahan jika Anda mencobanya.
Bentuk kelas {
publik:
House virtualint() = 0; // Fungsi digital murni dideklarasikan sebagai berikut.
// Berfungsi untuk mengendalikan lebar.
voidsetval_width(int w) {
lebar = w;
}
// Berfungsi untuk mengendalikan ketinggian.
voidsetval_height(int h) {
tinggi = jam;
}
terlindung:
lebar int;
tinggi int;
};
House () dideklarasikan dengan specifier murni (= 0), yang merupakan satu-satunya perbedaan antara deklarasi ini serta deklarasi sebelumnya.
Implementasi kelas abstrak sebagai berikut
Memasukkan:
Keluaran:
Pembatasan Kelas Abstrak
Kelas abstrak sepertinya tidak bisa digunakan untuk tujuan berikut:
- Information atau variabel anggota
- Bentuk perdebatan
- Jenis keluaran fungsi
- Konversi yang dilakukan secara eksplisit
Hasilnya sepertinya tidak diketahui apakah fungsi kelas abstrak Object () { (local code) } secara eksplisit atau sepertinya tidak langsung memanggil metode digital murni. Sebaliknya, konstruktor serta destruktor untuk grup abstrak mempunyai kemampuan untuk memanggil fungsi anggota lainnya.
Definisi Virtualitas Murni
Fungsi digital murni bisa ditentukan secara singkat di kelas Abstrak, yang akan digunakan bersamaan oleh semua kelas turunan. Anda masih sepertinya tidak bisa membuat objek kelas Abstrak.
Selanjutnya, fungsi Digital Murni harus segera ditentukan secara terpisah dari deskripsi kelas. Kompiler akan memunculkan kesalahan jika Anda mendefinisikannya dalam deskripsi kelas. Mendefinisikan inline digital murni merupakan pelanggaran hukum.
Memasukkan:
Keluaran:
Betapa Pentingnya Abstraksi dalam Kehidupan Sehari-hari
Contoh abstraksi kehidupan nyata lainnya yaitu mesin ATM; kita semua memakai mesin ATM untuk melakukan operasi seperti penarikan tunai, pengiriman uang, pengambilan mini-statement, serta sebagainya, tetapi kita tidak punya akses ke informasi interior ATM. Abstraksi information bisa digunakan untuk melindungi information agar sepertinya tidak diakses oleh metode yang sepertinya tidak sah.
Perbedaan Antara Antarmuka serta Kelas Abstrak
Antarmuka |
Kelas Abstrak |
|
Hanya sebuah antarmuka yang bisa diwarisi oleh sebuah antarmuka |
Kata kunci Prolonged memungkinkan kelas abstrak untuk mewarisi kelas lain serta menerapkan antarmuka. |
|
Satu-satunya cara untuk mengimplementasikan antarmuka yaitu dengan cara kata kunci implementasi. |
Kata kunci extends bisa digunakan untuk mewarisi kelas abstrak |
Kesimpulan
Kata kunci summary harus segera digunakan ketika mendeklarasikan kelas summary. Ini bisa meliputi metode abstrak serta non-abstrak. Ini mungkin saja serta meliputi konstruktor serta metode statis. Ia bisa mempunyai metode ultimate, yang mencegah subkelas mengubah isi metode. Kelas abstrak dalam C++ yaitu kelas yang mempunyai setidak-tidaknya satu fungsi digital murni menurut definisi. Dengan kata lain, suatu fungsi yang sepertinya tidak mempunyai definisi. Keturunan kelas abstrak harus segera mendefinisikan fungsi digital murni; jika sepertinya tidak, subkelas akan menjadi kelas abstrak tersendiri. Beberapa karakter penting dari kelas abstrak dengan contoh yang sesuai serta serta fungsi digital telah dibahas. Kelas abstrak yaitu kelas yang dinyatakan abstrak; tersebut mungkin saja mengandung atau sepertinya tidak mengandung metode abstrak. Subkelas dari kelas abstrak bisa dibentuk, namun sepertinya tidak bisa dibuat instance-nya. Ketika kelas abstrak disubkelaskan, subkelas itu biasanya menawarkan implementasi untuk semua metode abstrak kelas induknya.
Sepertinya tidak mungkin saja membuat occasion kelas abstrak. Metode serta akses abstrak bisa ditemukan di kelas abstrak. Sebab kedua pengubah mempunyai definisi yang berlawanan, sepertinya tidak mungkin saja mengubah kelas abstrak dengan pengubah tersegel.
Pada artikel ini, Anda telah mempelajari tentang tumpukan, implementasi, operasi dengan sintaksis beserta contohnya. Kami pada nyatanya bisa membicarakan lebih cukup banyak tentang topik ini. Jadi, jika Anda mempunyai pertanyaan untuk kami, tinggalkan di bagian komentar artikel ini, serta pakar kami akan menjawabnya sesegera mungkin saja!
Apa yang membuat Anda benar-benar menonjol sebagai seorang profesional yang sukses yaitu keahlian di bidang apa pun. Jadi, untuk dapatkan lebih cukup banyak keahlian dalam bahasa pemrograman C++, Anda bisa bergabung dengan Complete Stack Developer Simplilearn kami – MERN Stack. Selain tersebut, kami serta menyediakan pilihan kursus khusus secara tanpa biaya untuk semua pelajar.
FAQ
1. Apa maksudnya dengan kelas abstrak di C++?
Kelas abstrak dalam C++ yaitu kelas yang sepertinya tidak bisa dibuat instance-nya sendiri serta dirancang untuk menjadi kelas dasar bagi kelas lain. Ini berisi setidak-tidaknya satu fungsi digital murni, yang dideklarasikan dengan menetapkan 0. Misalkan saja:
elegance AbstractClass {
public:
digital void pureVirtualFunction() = 0; // Natural digital serve as
};
Kelas yang diturunkan dari kelas abstrak harus segera mengimplementasikan fungsi digital murni agar bisa dipakai.
2. Mengapa kita memakai kelas abstrak di C++?
Kelas abstrak digunakan di C++ untuk mendefinisikan antarmuka serta menerapkan kontrak untuk kelas turunan. Mereka memungkinkan Anda menyelesaikan serangkaian metode yang harus segera diterapkan oleh subkelas mana pun, memastikan antarmuka yang konsisten serta mendorong penggunaan kembali kode serta polimorfisme.
3. Bagaimana Anda mendefinisikan serta mengimplementasikan fungsi digital murni di kelas abstrak?
Fungsi digital murni didefinisikan dalam kelas abstrak dengan menetapkan 0 pada deklarasi fungsi digital. Tersebut harus segera ditimpa oleh kelas turunan mana pun. Berikut ini contohnya:
elegance AbstractClass {
public:
digital void pureVirtualFunction() = 0; // Natural digital serve as
};
elegance DerivedClass : public AbstractClass {
public:
void pureVirtualFunction() override {
// Implementation of the natural digital serve as
}
};
4. Bisakah kelas abstrak mempunyai fungsi digital serta variabel anggota yang sepertinya tidak murni?
Ya, kelas abstrak bisa mempunyai fungsi digital non-murni serta variabel anggota. Fungsi digital yang sepertinya tidak murni bisa memberikan perilaku default yang diwarisi atau dirubah oleh kelas turunan. Pada saat yang sama, variabel anggota bisa mendatanya information umum yang diturunkan dari kelas-kelas yang dibagikan. Misalkan saja:
elegance AbstractClass {
public:
digital void pureVirtualFunction() = 0; // Natural digital serve as
digital void nonPureVirtualFunction() {
// Default implementation
}
void concreteFunction() {
// Concrete serve as implementation
}
secure:
int memberVariable;
};
5. Apa yang sedang terjadi jika kelas turunan sepertinya tidak mengesampingkan semua fungsi digital murni dari kelas abstrak?
Jika kelas turunan sepertinya tidak mengesampingkan semua fungsi digital murni dari kelas abstrak, maka kelas itu menjadi kelas abstrak serta sepertinya tidak bisa dipakai. Tersebut harus segera menyediakan implementasi konkrit untuk semua fungsi digital murni yang diwarisi untuk membuat occasion kelas turunan. Misalkan saja:
elegance AbstractClass {
public:
digital void pureVirtualFunction1() = 0;
digital void pureVirtualFunction2() = 0;
};
elegance PartiallyDerivedClass : public AbstractClass {
public:
void pureVirtualFunction1() override {
// Implementation of pureVirtualFunction1
}
// pureVirtualFunction2 isn't overridden, so PartiallyDerivedClass is summary
};
elegance FullyDerivedClass : public PartiallyDerivedClass {
public:
void pureVirtualFunction2() override {
// Implementation of pureVirtualFunction2
}
};
[ad_2]
Sumber: simplilearn-com








