Apa perbedaan antara fungsi abstrak dan fungsi virtual? Dalam kasus apa disarankan menggunakan virtual atau abstrak? Mana yang merupakan pendekatan
Dalam pemrograman berorientasi objek, fungsi virtual atau metode virtual adalah fungsi atau metode yang perilakunya dapat diganti dalam kelas yang diturunkan oleh fungsi dengan tanda tangan yang sama. Konsep ini adalah bagian yang sangat penting dari bagian polimorfisme pemrograman berorientasi objek (OOP).
Apa perbedaan antara fungsi abstrak dan fungsi virtual? Dalam kasus apa disarankan menggunakan virtual atau abstrak? Mana yang merupakan pendekatan
Saya sedang belajar C ++ dan saya baru saja masuk ke fungsi virtual. Dari apa yang saya baca (dalam buku dan online), fungsi virtual adalah fungsi dalam kelas dasar yang dapat Anda timpa dalam kelas turunan. Tetapi sebelumnya dalam buku ini, ketika belajar tentang pewarisan dasar, saya bisa...
Katakanlah saya memiliki kelas Foodan Barmengatur seperti ini: class Foo { public: int x; virtual void printStuff() { std::cout << x << std::endl; } }; class Bar : public Foo { public: int y; void printStuff() { // I would like to call Foo.printStuff() here... std::cout...
Saya telah mendengar bahwa templat fungsi anggota kelas C ++ tidak bisa virtual. Apakah ini benar? Jika mereka bisa virtual, apa contoh skenario di mana seseorang akan menggunakan fungsi seperti
Sejauh yang saya mengerti, pengenalan overridekata kunci di C ++ 11 tidak lebih dari sebuah cek untuk memastikan bahwa fungsi yang sedang dilaksanakan adalah fungsi overridedari sebuah virtualkelas dasar. Itu
Dengan definisi struct yang diberikan di bawah ini ... struct A { virtual void hello() = 0; }; Pendekatan # 1: struct B : public A { virtual void hello() { ... } }; Pendekatan # 2: struct B : public A { void hello() { ... } }; Apakah ada perbedaan antara kedua cara ini untuk...
Saya mendapat pertanyaan ini ketika saya menerima komentar ulasan kode yang mengatakan fungsi virtual tidak perlu sebaris. Saya pikir fungsi virtual sebaris bisa berguna dalam skenario di mana fungsi dipanggil pada objek secara langsung. Namun argumen yang muncul di benak saya adalah - mengapa...
Apakah mungkin untuk menulis metode virtual di Jawa, seperti yang akan dilakukan di C ++? Atau, apakah ada pendekatan Java yang tepat yang dapat Anda terapkan yang menghasilkan perilaku serupa? Bisakah saya punya beberapa
Dalam desain kelas saya, saya menggunakan kelas abstrak dan fungsi virtual secara luas. Saya merasa bahwa fungsi virtual mempengaruhi kinerja. Apakah ini benar? Tapi saya pikir perbedaan kinerja ini tidak terlihat dan sepertinya saya melakukan optimasi prematur.
Kita semua tahu apa fungsi virtual di C ++, tetapi bagaimana mereka diterapkan pada level yang dalam? Bisakah vtable diubah atau bahkan diakses langsung saat runtime? Apakah vtable ada untuk semua kelas, atau hanya yang memiliki setidaknya satu fungsi virtual? Apakah kelas abstrak hanya...
Metode C # di antarmuka dideklarasikan tanpa menggunakan virtualkata kunci, dan diganti di kelas turunan tanpa menggunakan overridekata kunci. Apakah ada alasan untuk ini? Saya berasumsi bahwa ini hanya kenyamanan bahasa, dan jelas CLR tahu bagaimana menangani ini di bawah selimut (metode tidak...
Memiliki setidaknya satu metode virtual dalam kelas C ++ (atau salah satu kelas induknya) berarti bahwa kelas tersebut akan memiliki tabel virtual, dan setiap instance akan memiliki penunjuk virtual. Jadi biaya memorinya cukup jelas. Yang paling penting adalah biaya memori pada instance (terutama...
Saya terkadang melihat program yang mogok di komputer saya dengan kesalahan: "panggilan fungsi virtual murni". Bagaimana program-program ini bahkan dapat dikompilasi ketika sebuah objek tidak dapat dibuat dari kelas
Tidak seperti Java, mengapa C # memperlakukan metode sebagai fungsi non-virtual secara default? Apakah ini lebih cenderung menjadi masalah kinerja daripada hasil lain yang mungkin? Saya teringat saat membaca paragraf dari Anders Hejlsberg tentang beberapa keuntungan yang dibawa oleh arsitektur...
Saya memiliki kelas dasar dengan fungsi virtual dan saya ingin mengganti fungsi itu di kelas turunan. Adakah cara untuk membuat compiler memeriksa apakah fungsi yang saya deklarasikan di kelas turunan benar-benar menggantikan fungsi di kelas dasar? Saya ingin menambahkan beberapa makro atau sesuatu...
Adakah alasan bagus untuk tidak mendeklarasikan destruktor virtual untuk kelas? Kapan sebaiknya Anda secara khusus menghindari
Saya tahu metode virtual dari PHP atau Java. Bagaimana mereka bisa diimplementasikan dengan Python? Atau haruskah saya mendefinisikan metode kosong dalam kelas abstrak dan menimpanya?