«virtual-functions» etiketlenmiş sorular

Nesne yönelimli programlamada, sanal bir işlev veya sanal yöntem, davranışı aynı imzaya sahip bir işlev tarafından miras alan bir sınıf içinde geçersiz kılınabilen bir işlev veya yöntemdir. Bu kavram, nesne yönelimli programlamanın (OOP) çok biçimlilik kısmının çok önemli bir parçasıdır.


25
Neden C ++ 'da sanal fonksiyonlara ihtiyacımız var?
C ++ öğreniyorum ve sadece sanal işlevlere giriyorum. Okuduğumdan (kitapta ve çevrimiçi olarak), sanal işlevler temel sınıfta türetilmiş sınıflarda geçersiz kılabileceğiniz işlevlerdir. Ancak kitapta daha önce, temel kalıtım hakkında bilgi edinirken, türetilmiş sınıflardaki temel işlevleri kullanmadan geçersiz kılabildim virtual. Peki burada ne eksik? Sanal işlevler hakkında daha fazla şey olduğunu …





13
Satır içi sanal işlevler gerçekten mantıklı değil mi?
Sanal işlevler satır içinde olması gerektiğini söyleyerek bir kod inceleme yorum aldığımda bu soruyu aldım. Satır içi sanal işlevlerin, işlevlerin doğrudan nesneler üzerinde çağrıldığı senaryolarda kullanışlı olabileceğini düşündüm. Ama aklıma gelen karşı argüman - neden sanal tanımlamak ve sonra yöntemleri çağırmak için nesneleri kullanmak istesin ki? Neredeyse hiç genişletilmedikleri için …


15
Sanal işlevler ve performans - C ++
Sınıf tasarımımda, soyut sınıfları ve sanal işlevleri yoğun bir şekilde kullanıyorum. Sanal işlevlerin performansı etkilediği hissine kapıldım. Bu doğru mu? Ancak bu performans farkının fark edilmediğini düşünüyorum ve erken optimizasyon yapıyorum gibi görünüyor. Sağ?

12
Sanal işlevler ve vtable nasıl uygulanır?
C ++ 'da hangi sanal işlevlerin olduğunu hepimiz biliyoruz, ancak bunlar derin bir düzeyde nasıl uygulanır? Vtable değiştirilebilir veya çalışma zamanında doğrudan erişilebilir mi? Vtable tüm sınıflar için mi yoksa yalnızca en az bir sanal işlevi olanlarda mı var? Soyut sınıflar, en az bir girdinin işlev işaretçisi için basitçe bir …

6
C # arabirim yöntemleri neden soyut veya sanal olarak bildirilmiyor?
Arabirimlerdeki C # yöntemleri virtualanahtar sözcük kullanılmadan bildirilir ve anahtar sözcük kullanılmadan türetilmiş sınıfta geçersiz kılınır override. Bunun bir sebebi var mı? Bunun sadece bir dil kolaylığı olduğunu varsayıyorum ve CLR bunu kapaklar altında nasıl ele alacağını biliyor (yöntemler varsayılan olarak sanal değildir), ancak başka teknik nedenler var mı? Türetilmiş …

9
C ++ sınıfında sanal bir yönteme sahip olmanın performans maliyeti nedir?
Bir C ++ sınıfında (veya üst sınıflarından herhangi birinde) en az bir sanal yönteme sahip olmak, sınıfın sanal bir tabloya sahip olacağı ve her örneğin sanal bir işaretçiye sahip olacağı anlamına gelir. Yani hafıza maliyeti oldukça açık. En önemlisi, örneklerdeki bellek maliyetidir (özellikle örnekler küçükse, örneğin yalnızca bir tamsayı içermeleri …


9
Neden C #, yöntemleri varsayılan olarak sanal olmayan olarak uygular?
Java'dan farklı olarak, C # neden yöntemleri varsayılan olarak sanal olmayan işlevler olarak ele alıyor? Diğer olası sonuçlardan ziyade bir performans sorunu olması daha olası mıdır? Anders Hejlsberg'den, mevcut mimarinin ortaya çıkardığı çeşitli avantajlar hakkında bir paragraf okumamı hatırlattım. Peki ya yan etkiler? Varsayılan olarak sanal olmayan yöntemlere sahip olmak …

9
C ++ sanal işlevlerini güvenle geçersiz kılın
Sanal işleve sahip bir temel sınıfım var ve bu işlevi türetilmiş bir sınıfta geçersiz kılmak istiyorum. Derleyicinin türetilmiş sınıfta tanımladığım işlevin temel sınıftaki bir işlevi gerçekten geçersiz kılıp kılmadığını kontrol etmesini sağlamanın bir yolu var mı? Eskisini geçersiz kılmak yerine yanlışlıkla yeni bir işlevi ilan etmemeyi sağlayan bazı makro veya …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.