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

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

Video: Map of Computer Science 2025

Video: Map of Computer Science 2025
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

Kantor 2011 untuk Mac: Membuat Tabel dengan Kotak Dialog atau Teks - dummies

Kantor 2011 untuk Mac: Membuat Tabel dengan Kotak Dialog atau Teks - dummies

Sementara ada cara baru untuk membuat tabel di Office 2011 untuk Mac, Anda masih bisa menggunakan teknik stand-by. Menu yang familiar masih bekerja di Office 2011 untuk Mac, dan inilah buktinya. Dialog meja semuanya masih ada di sana: Di Word, pilih Table → Insert → Table; Sebagai alternatif, pada tab Tabel Ribbon, di Tabel Pilihan ...

Kantor 2011 untuk Mac: Melepaskan Command Toolbar - dummies

Kantor 2011 untuk Mac: Melepaskan Command Toolbar - dummies

Apakah Anda menggunakan Office 2011 untuk Mac atau Produk Microsoft Office lainnya, toolbar Anda bisa sangat berantakan. Setiap kali Anda merasa perlu untuk men-tweak antarmuka aplikasi Microsoft Office, Anda perlu memanggil dialog Customize Toolbars and Menus. Ini adalah dialog super kuat di Word, Excel, dan PowerPoint yang memungkinkan Anda ...

Kantor 2011 untuk Mac: Berbagi Toolbar dan Menu - dummies

Kantor 2011 untuk Mac: Berbagi Toolbar dan Menu - dummies

Setelah Anda menyesuaikan Office 2011 Anda bilah alat dan antarmuka, Anda dapat berbagi penyesuaian dengan orang lain. Namun, pastikan bahwa Anda menasihati orang-orang yang telah Anda lakukan sebelum membagikan dokumen Anda dengannya; Jika tidak, mereka mungkin akan terkejut saat mereka membuka dokumen Anda dan melihat susunan toolbar atau menu yang berbeda dari pada apa ...

Pilihan Editor

Penting Office 2007 Commands - dummies

Penting Office 2007 Commands - dummies

Anda dapat membuat program Office 2007 lebih mudah jika Anda menggunakan pintasan sederhana ini. Perintah-perintah ini, seperti mengurungkan kesalahan dan memperbesar dan memperkecil akan membantu Anda menghemat waktu. Memasuki simbol: Untuk memasukkan simbol atau karakter asing yang tidak ada pada keyboard Anda, masuk ke tab Insert dan klik Symbol ...

Menyesuaikan Perintah Menu di Office 2003 - dummies

Menyesuaikan Perintah Menu di Office 2003 - dummies

Office 2003 menyediakan dua teknik untuk menyesuaikan menu dan perintah menu. Anda bisa memulai dari kotak dialog Rearrange Commands atau menggunakan metode drag-and-drop. Teruslah membaca. Menangani perintah menu di kotak dialog Rearrange Commands Teknik tombol Options Toolbar untuk menangani tombol toolbar bagus dan keren, tapi bagaimana jika Anda ingin ...

Pilihan Editor

Bagaimana memecahkan kesalahan logis dalam analisis argumen Pertanyaan GRE - dummies

Bagaimana memecahkan kesalahan logis dalam analisis argumen Pertanyaan GRE - dummies

Ketika Anda menjawab Argument Analysis Pertanyaan di GRE, argumen mungkin tampak logis dan adil di permukaan tapi sebenarnya keliru (keliru, cacat). Alasan melingkar, penalaran sebab-akibat yang keliru, dan generalisasi sweeping adalah tiga tanda argumen lemah. Dengan melihat beberapa kesalahan logis yang lebih umum, Anda dapat mengidentifikasi kelemahan dalam argumen dan ...

Pilihan ganda, Beberapa Jawaban tentang Tes Matematika GRE - Pertanyaan Praktik - dummies

Pilihan ganda, Beberapa Jawaban tentang Tes Matematika GRE - Pertanyaan Praktik - dummies

Meskipun pertanyaan matematika biasanya hanya memiliki satu jawaban yang benar, ini tidak selalu terjadi. Akibatnya, beberapa pertanyaan pilihan ganda pada tes GRE Math akan memberi Anda daftar jawaban dan meminta Anda untuk memilih lebih dari satu. Pertanyaan praktik berikut meminta Anda untuk menemukan nilai kemungkinan yang berbeda secara berurutan dan ...

Pilihan ganda, Beberapa Jawaban tentang Tes Verbal GRE - Pertanyaan Praktik - dummies

Pilihan ganda, Beberapa Jawaban tentang Tes Verbal GRE - Pertanyaan Praktik - dummies

Pada tes GRE Verbal, beberapa pertanyaan pilihan ganda akan memiliki lebih dari satu jawaban yang benar. Untuk pertanyaan ini, Anda akan diminta untuk melihat-lihat pilihan jawaban dan memilih semua yang menurut Anda benar. Dalam pertanyaan praktik berikut, Anda diminta untuk membaca bagian yang disertakan, dan kemudian ...