Rumah Keuangan Pribadi C ++ Programming: Kapan Fungsi Virtual Tidak? - dummies

C ++ Programming: Kapan Fungsi Virtual Tidak? - dummies

Video: Map of Computer Science 2024

Video: Map of Computer Science 2024
Anonim

Di C ++, hanya karena Anda berpikir bahwa panggilan fungsi tertentu terlewati tidak berarti itu sebenarnya. Jika tidak dideklarasikan dengan argumen yang sama di subclass, fungsi anggota tidak ditimpa secara polimorfik, apakah dinyatakan tidak bersifat virtual atau tidak.

Satu pengecualian pada aturan deklarasi yang sama adalah bahwa jika fungsi anggota di kelas dasar mengembalikan pointer atau referensi ke objek kelas dasar, fungsi anggota yang ditimpa dalam subkelas dapat mengembalikan pointer atau referensi ke objek subkelas. Dengan kata lain, fungsi makeACopy () bersifat polimorfik, meskipun tipe kembalian dari dua fungsi berbeda:

class Base {public: // kembalikan salinan objek saat ini Base * makeACopy ();}; class SubClass: public base {public: // mengembalikan salinan objek saat ini SubClass * makeACopy ();}; void fn (Base & bc) {Base * pCopy = bc. makeACopy (); // lanjutkan di …}

Dalam prakteknya, ini sangat wajar. Fungsi makeACopy () harus mengembalikan objek tipe SubClass , meskipun mungkin menimpa BaseClass:: makeACopy () .

Bisnis ini diam-diam memutuskan kapan sebuah fungsi diganti dan bila bukan merupakan sumber kesalahan di C ++; begitu banyak sehingga standar 2011 memperkenalkan deskriptor mengesampingkan yang dapat digunakan pemrogram untuk menunjukkan bahwa dia bermaksud untuk mengganti fungsi kelas dasar.

C ++ menghasilkan kesalahan kompilator jika sebuah fungsi dinyatakan mengesampingkan namun sebenarnya, tidak, menimpa fungsi kelas dasar karena beberapa alasan (seperti argumen yang tidak sesuai) seperti pada contoh berikut: >

class Student {public: virtual void addCourseGrade (kelas dua);}; kelas GradStudent: public Student {public: virtual void addCourseGrade (float grade) override;};
Potongan ini menghasilkan kesalahan waktu kompilasi karena metode GradStudent:: addCourseGrade (float) telah diumumkan menggantikannya tapi sebenarnya tidak menggantikan fungsi kelas dasar Student:: addCourseGrade (double) karena tipe argumen don ' t cocok

Pemrogram juga dapat mendeklarasikan fungsi sebagai tidak overrideable dengan menggunakan kata kunci

final , walaupun fungsi itu sendiri menggantikan beberapa fungsi kelas dasar sebelumnya, seperti yang ditunjukkan pada tambahan berikut > PostDoc kelas: kelas GradStudent: public Student {public: virtual void addCourseGrade (kelas ganda) final;}; kelas PostDoc: public GradStudent {public: virtual void addCourseGrade (kelas dua);}; Karena Siswa:: addCourseGrade () ditandai akhir

,

deklarasi PostDoc:: addCourseGrade () menghasilkan kesalahan karena mencoba untuk mengganti metode Siswa .

Selain itu, seluruh kelas dapat dinyatakan

final:

kelas GradStudent final: public Student Ini mempengaruhi lebih dari sekedar metode virtual kelas. Kelas

final

tidak dapat diwarisi sama sekali.

C ++ Programming: Kapan Fungsi Virtual Tidak? - dummies

Pilihan Editor

10 Outlook 2013 Jalan pintas layak diambil - dummies

10 Outlook 2013 Jalan pintas layak diambil - dummies

Meskipun komputer dan program perangkat lunak seperti Outlook 2013 seharusnya menyelamatkan Anda waktu, beberapa hari ini sepertinya tidak menjadi masalah. Tombol juggling, kunci, dan Pita sepertinya bisa memakan waktu seharian. Berikut adalah beberapa cara pintas yang bisa menghemat waktu dan ketegangan Anda.

Cara menambahkan kontak di Outlook 2013 - dummies

Cara menambahkan kontak di Outlook 2013 - dummies

Bila bukan apa yang Anda ketahui tapi siapa yang Anda kenal, Anda butuh alat yang bagus untuk mencatat siapa siapa. Outlook 2013 adalah alat yang hebat untuk mengelola nama dan alamat Anda, dan ini mudah digunakan sebagai Buku Hitam Kecil Anda.

Cara menambahkan foto ke kontak Outlook 2013 - dummies

Cara menambahkan foto ke kontak Outlook 2013 - dummies

Anda dapat menyertakan gambar dengan kontak informasi yang Anda kumpulkan di Outlook 2013, dan tidak hanya untuk hiasan. Kini setelah banyak ponsel dan perangkat seluler lainnya melakukan sinkronisasi dengan daftar Kontak Outlook, Anda dapat membuat gambar seseorang muncul di layar ponsel Anda setiap kali dia menelepon atau mengirim SMS. Foto-foto itu ...

Pilihan Editor

Cara Mengatasi Masalah Lingkaran di lingkaran PSAT / NMSQT - dummies

Cara Mengatasi Masalah Lingkaran di lingkaran PSAT / NMSQT - dummies

Ada di mana-mana, terutama di PSAT / NMSQT. Bukan kebetulan bahasa Inggris berisi begitu banyak rujukan ke lingkaran: lingkaran teman, air mengitari cerat, lingkaran penuh, dan sebagainya. Ketika Anda menekan lingkaran pertanyaan pada PSAT / NMSQT, ingat fakta-fakta ini: Jari-jari adalah garis lurus dari pusat lingkaran ...

Meningkatkan Motivasi Anda untuk Dilakukan dengan baik di MAT - dummies

Meningkatkan Motivasi Anda untuk Dilakukan dengan baik di MAT - dummies

Uji Analogi Miller (Miller Analogies Test - MAT) adalah tes standar yang biasanya digunakan untuk penerimaan sekolah pascasarjana, jadi Anda sudah termotivasi untuk melakukannya dengan baik. Sebagai belajar untuk MAT menjadi sulit, memakan waktu, membosankan, atau hanya membosankan, akan sulit untuk mempertahankan motivasi Anda untuk melanjutkan pencarian Anda. Jadi, bagaimana Anda bisa meningkatkan level Anda saat ini?

Pilihan Editor

Bagaimana memberi nama file HTML - dummies

Bagaimana memberi nama file HTML - dummies

Anda tidak dapat membuka kode Anda di browser sampai Anda menyimpan itu dengan perpanjangan nama file. html (atau .htm). Ingat bahwa judul halaman ditampilkan di bilah judul browser atau bilah tab. Judul benar-benar bagaimana halaman Anda "diidentifikasi" ke seluruh dunia. Nama file halaman, meskipun, lebih merupakan bagian dalam ...

Bagaimana Mencocokkan Email Pemasaran dengan Brand Anda - dummies

Bagaimana Mencocokkan Email Pemasaran dengan Brand Anda - dummies

Branding e-mail pemasaran Anda membantu audiens Anda untuk segera mengenali dan membedakan e-mail Anda dari e-mail asing yang mereka terima. Menjaga pencitraan e-mail Anda konsisten dari waktu ke waktu memungkinkan penerima Anda mengenal Anda dan e-mail karena mereka menerima beberapa e-mail dari Anda. Semua komunikasi bisnis Anda harus mengandung elemen pencitraan merek yang konsisten, dan ...