SORU
7 Temmuz 2011, PERŞEMBE


Neden tüm fonksiyonları sanal C değil mi ?

Sanal fonksiyonlar bir yöntemi çağırmak için kaldırma bir yük olduğunu biliyorum. Ama yok denecek kadar az olduğu modern mimari Hızı ile sanırım.

  1. C tüm fonksiyonları Java sanal olarak değil, belli bir sebep var mı?
  2. Bilgimle, bir işlevi temel sınıf sanal tanımlama yeterli/gerekli. Şimdi bir üst sınıf yazdığımda, üzerine basmış olabilir bilmiyorum. Yani bir alt sınıf yazarken biri üst sınıf düzenlemek zorunda olacağı anlamına mı geliyor. Bu gibi uygunsuz ve mümkün bazen sesler?

Güncelleme:
Jon Skeet cevabı aşağıda özetleme:

Bir açıkça birisi işlevselliği miras olduğunun farkında olmak arasındaki anlaşma kendilerine potansiyel riskleri olan [[(Jon tepkisini kontrol edin)] [ve potansiyel küçük performans artışı]bir anlaşmadaha az esneklik, daha fazla kod değişiklikleri ve dik bir öğrenme eğrisi için.

Farklı cevaplar diğer nedenleri:

Sanal işlevler, satır içi uygulaması zamanında gerçekleşmesi için çizgili olamaz. Bu satır içi uygulaması faydaları fonksiyonları beklediğiniz performansı etkiler.

Olası başka nedenleri de olabilir, ve biliyor ve bunları özetlemek isterim.

CEVAP
7 Temmuz 2011, PERŞEMBE


  1. C ana ilkelerinden biri şudur: siz sadece kullandığınız kadar ödeme ("havai prensibi") sıfır. Eğer dinamik mekanizma gönderme ihtiyacın olursa, havai bedelini sen ödemek zorunda değilsin.

  2. Temel sınıf yazar olarak, geçersiz kılınması için izin verilmelidir karar verin. Hem yazıyorsun, devam et ve ihtiyacın olanı yeniden Düzenle. Ama temel sınıf yazarı kullanımını kontrol etmek için bir yolu olmalı çünkü bu şekilde çalışır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • kidrauhl

    kidrauhl

    15 Ocak 2007
  • Leigh Momii

    Leigh Momii

    10 Mayıs 2006