Video: How to Create a Linked List C++ Introduction to Linked Lists 2024
Kelas abstrak dalam C ++ adalah kelas dengan satu atau lebih fungsi maya tulen. Fungsi murni murni adalah fungsi ahli maya yang ditandai sebagai tidak mempunyai pelaksanaan. Kemungkinan besar ia tidak mempunyai pelaksanaan kerana tiada pelaksanaan yang mungkin dengan maklumat yang diberikan di dalam kelas, termasuk mana-mana kelas asas.
Fungsi maya bukan murni konvensional, run-of-the-mill murni dikenali sebagai fungsi konkrit (perhatikan bahawa fungsi konkrit mungkin maya - malangnya, C ++ menggunakan istilah ini sebagai polimorfik.
Sintaks untuk menyatakan fungsi murni tulen ditunjukkan dalam kelas berikut Akaun:
// Akaun - kelas ini adalah kelas kelas abstrak Akaun {public: Akaun (accNo unsigned, double initialBalance = 0.) // // fungsi akses unsigned int accountNo (); double acntBalance (); int static int noAccounts (); // adalah fungsi virtual murni yang tidak sah pengeluaran (jumlah berganda) = 0; dilindungi: // menyimpan akaun dalam senarai terikat jadi tidak ada had // untuk bilangan akaun statik int menghitung; // bilangan akaun akaun tidak ditandatanganiNumber;;};
The = 0 selepas pengisytiharan pengeluaran () menunjukkan bahawa programmer tidak bermaksud untuk menentukan fungsi ini. pada adalah pemegang tempat bagi subkelas. Subkelas Akaun dijangka akan mengatasi fungsi ini dengan fungsi konkrit. Programmer mesti menyediakan pelaksanaan untuk setiap fungsi ahli yang tidak diisytiharkan murni tulen.
Sesetengah pengaturcara berpendapat notasi ini adalah bodoh. Tetapi di sini untuk tinggal, jadi anda perlu belajar untuk hidup dengannya. Terdapat sebab, jika tidak tepatnya justifikasi, untuk notasi ini. Setiap fungsi maya mesti mempunyai catatan dalam jadual khas.
Entri ini mengandungi alamat fungsi. Mungkin, sekurang-kurangnya pada satu masa, kemasukan untuk fungsi maya tulen adalah 0. Dalam sebarang kes, itu sintaks yang anda terjebak sekarang.
Kelas abstrak tidak boleh dipupuk dengan objek; iaitu, anda tidak boleh membuat objek daripada kelas abstrak. Sebagai contoh, perisytiharan berikut tidak sah:
void fn () {// mengisytiharkan akaun dengan 100 dolar Akaun acnt (1234, 100. 00); // Ini bukan akta yang sah. pengeluaran (50); // apa yang anda harapkan} // panggilan ini untuk dilakukan?
Sekiranya perisytiharan itu dibenarkan, objek yang dihasilkan akan tidak lengkap, tidak mempunyai keupayaan tertentu. Contohnya, apa yang perlu dilakukan panggilan sebelumnya? Ingat, tiada Akaun:: withdrawal () .
Kelas Abstrak berfungsi sebagai kelas asas untuk kelas-kelas lain. Akaun mengandungi semua sifat yang berkaitan dengan akaun bank generik. Anda boleh membuat jenis akaun bank lain dengan mewarisi dari Akaun.
Istilah teknikal adalah instantiate . Anda mengatakan bahawa kelas Akaun tidak boleh instantiated dengan objek atau objek tertentu instantiates kelas Simpanan .