Rumah Kewangan Peribadi C ++ Pemrograman: Bilakah Fungsi Maya Tidak? - dummies

C ++ Pemrograman: Bilakah Fungsi Maya Tidak? - dummies

Video: Writing 2D Games in C using SDL by Thomas Lively 2024

Video: Writing 2D Games in C using SDL by Thomas Lively 2024
Anonim

Dalam C ++, hanya kerana anda berfikir bahawa panggilan fungsi tertentu terikat terlambat tidak bermakna ia. Sekiranya tidak diisytiharkan dengan hujah-hujah yang sama dalam subclass, fungsi anggota tidak diganti secara polimorfik, sama ada ia dinyatakan maya atau tidak.

Satu pengecualian kepada peraturan perisytiharan yang sama adalah bahawa jika fungsi anggota dalam kelas asas mengembalikan penunjuk atau rujukan kepada objek kelas asas, fungsi anggota yang ditindas dalam subclass boleh mengembalikan penunjuk atau rujukan kepada objek subclass. Dengan kata lain, fungsi membuat RAOPy () adalah polimorfik, walaupun jenis pemulangan kedua-dua fungsi berbeza:

class Base {public: // return a copy of the current object Base * makeACopy ();}; kelas SubClass: public base {public: // return a copy of subClass object * makeACopy ();}; void fn (Base & bc) {Base * pCopy = bc. buat salinan(); // lanjutkan …}

Dalam praktiknya, ini agak semula jadi. Fungsi makeACopy () harus mengembalikan objek SubClass jenis , walaupun ia mungkin menimpa BaseClass:: makeACopy () .

Perniagaan ini secara senyap memutuskan apabila fungsi ditindih dan apabila tidak menjadi punca kesilapan dalam C ++; sehingga standard 2011 memperkenalkan descriptor override yang boleh digunakan oleh programmer untuk menunjukkan niatnya untuk menimpa fungsi kelas asas.

C + + menghasilkan ralat pengkompil jika fungsi diisytihar menimpa tetapi tidak, sebenarnya, menimpa fungsi kelas asas untuk beberapa sebab (seperti argumen tidak sepadan) seperti dalam contoh berikut: >

kelas Pelajar {awam: void maya addCourseGrade (gred berganda);}; kelas GradStudent: Pelajar awam {awam: void maya addCourseGrade (gred float);};
Potongan ini menjana ralat masa kompilasi kerana kaedah GradStudent:: addCourseGrade (terapung) diisytiharkan override tetapi ia tidak, sebenarnya, mengatasi fungsi kelas asas Pelajar:: addCourseGrade (double) kerana jenis argumen tidak ' t padan.

Pengaturcara juga boleh mengisytiharkan fungsi sebagai tidak boleh diganti menggunakan kata kunci

akhir , walaupun fungsi itu sendiri menimpa beberapa fungsi asas kelas terdahulu, seperti yang ditunjukkan dalam tambahan berikut > PostDoc kelas: kelas GradStudent: Pelajar awam {awam: muktamad void addCourseGrade (double grade);}; kelas PostDoc: public GradStudent {awam: void maya addCourseGrade (double grade);}; Sejak Pelajar:: addCourseGrade () menandakan akhir

,

deklarasi PostDoc:: addCourseGrade () menghasilkan ralat kerana ia cuba untuk menimpa kaedah Pelajar .

Di samping itu, keseluruhan kelas boleh diisytiharkan

akhir:

kelas GradStudent akhir: Pelajar umum Ini memberi kesan lebih daripada sekadar kaedah maya kelas. Kelas

akhir

tidak dapat diwarisi daripada sama sekali.

C ++ Pemrograman: Bilakah Fungsi Maya Tidak? - dummies

Pilihan Editor

QuickBooks 2016: Senarai Kod Cukai Jualan, Senarai Kelas dan Senarai Nama Lain -

QuickBooks 2016: Senarai Kod Cukai Jualan, Senarai Kelas dan Senarai Nama Lain -

QuickBooks 2016 menawarkan banyak senarai. Anda mungkin ingin melihat senarai Kod Cukai Jualan, senarai Kelas, dan senarai Nama Lain. Jika anda perlu melihat senarai ini, cuma pilih senarai dari menu Senarai atau pilih Daftar → Senarai Profil Pelanggan & Vendor dan pilih senarai dari submenu yang ...

Perubahan Tarikh cepat - dummies

Perubahan Tarikh cepat - dummies

Ingin memasukkan atau menukar tarikh dalam entri QuickBooks? Memasuki dan mengedit tarikh dalam QuickBooks adalah pantas dan mudah apabila anda menggunakan pintasan keyboard QuickBooks yang sangat berguna ini. QuickBooks Key atau Keystroke Combination Shortcut Results + Next day - Hari Sebelumnya T Hari W Hari Pertama Minggu K Hari terakhir ...

QuickBooks Mematuhi Pesanan Pembelian - dummies

QuickBooks Mematuhi Pesanan Pembelian - dummies

Anda boleh membuat PO QuickBooks walaupun anda memesan barang melalui telefon atau melalui World Wide Web - iaitu, apabila anda tidak meminta barangan secara bertulis. Mengisi pesanan pembelian membolehkan anda menentukan item yang ada pada pesanan dan apabila item tersebut akan tiba. Apa yang anda perlu lakukan ialah bertanya ...

Pilihan Editor

Buat Label dengan Grafik di Word 2016 - dummies

Buat Label dengan Grafik di Word 2016 - dummies

Kata membolehkan anda mencetak helaian label yang serupa, tetapi ia mengandungi hanya teks membosankan. Cuba rempah-rempah dengan menambah warna, fancy, dan pemformatan. Cara terbaik untuk memasak label ialah menambah gambar atau grafik lain. Ikuti langkah berikut: Klik tab Mailings. Dalam kumpulan Buat, klik ...

Cara Mencipta Blok Bangunan AutoTeks dalam Kata 2016 - dummies

Cara Mencipta Blok Bangunan AutoTeks dalam Kata 2016 - dummies

Kata 2016 tidak mempunyai fungsi AutoComplete . Ia telah dikeluarkan beberapa versi yang lalu. Di tempatnya, anda membuat blok bangunan AutoText, yang berfungsi seperti AutoComplete lama. Blok bangunan AutoText ialah pembantu menaip. Anda membuat blok bangunan untuk teks yang sering anda taip, seperti nama, alamat, permintaan maaf, dan sebagainya. ...

Membuat Kad Ucapan di Microsoft Word 2003 - dummies

Membuat Kad Ucapan di Microsoft Word 2003 - dummies

Jika anda ingin membuat sesuatu dalam Word yang hanya akan mempesonakan seseorang, cuba tangan anda pada kad ucapan tersuai. Untuk menyiapkan Word untuk membuat kad ucapan dari satu lembaran kertas bersaiz standard, ikuti langkah-langkah berikut: 1. Pilih Fail -> Persediaan Halaman. 2. Klik tab Margin. 3. Pilih Landskap ...

Pilihan Editor

Cara Menyediakan Pengawal Cari untuk Geocoding dalam App iOS Anda

Cara Menyediakan Pengawal Cari untuk Geocoding dalam App iOS Anda

Anda sudah mempunyai satu teka-teki geocoding di tempat di papan cerita anda untuk apl iOS anda; ini Pengawal Cari yang sesuai bernama. Caranya ialah untuk menambah pengawal peribadi yang akan melaksanakan ciri Cari yang anda mahu. Untuk menambah projek anda, ikuti langkah-langkah berikut: Dalam Navigator Projek, pilih ...

Cara Menyediakan Pengawal Peta di Main_iPad. Storyboard dalam Apl IOS anda - dummies

Cara Menyediakan Pengawal Peta di Main_iPad. Storyboard dalam Apl IOS anda - dummies

Sekali anda mempunyai pengawal paparan peribadi untuk MapController dalam aplikasi iOS anda, anda perlu memberitahu papan cerita iPad untuk memuat pengawal pandangan adat anda dan bukannya UIViewController. Ikuti langkah berikut: Dalam Navigator Projek, pilih Main_iPad. papan cerita dan kemudian pilih Lihat Pengawal di Lihat Pengawal - Adegan Peta dalam Garis Besar Dokumen. ...