2013-03-04 26 views
6

Son zamanlarda çok fazla okuma yapıyorum ve kalıtım (ve sanal işlevler) içerisindeyken "inline" anahtar kelimesine rastlarım. Şimdi, normal anlamda-derleyicide satır içi ifadesinin, işlev çağrılarını tam kodla değiştirebileceğini biliyorum. Bununla birlikte, miras ile ilgili olarak gördüğüm sayıların sayısı, miras içinde satır içi kullanımın bazı özel nedenleri var mı? o söz ediliyor tutar neden .... bir satır içi işlevi kalıtım/türetilmiş sınıfları içinde var mı ekstra nasıl bir rol Kalıtım ve satır içi?

/sanal fonksiyonları anlamıyorum?

+0

@BillyONeal Bağlantının tam olarak ne olduğunu açıklayan bağlantı olduğunu sanmıyorum (eğer varsa). – user997112

+1

Bir kez daha ... bu bir kopya değil. Linkin ne olduğunu soruyorum ..... bu soru, sanal bir fonksiyona satır içi konulup konulmadığının sorulup sorulmadığını soruyor. Cevabını andıran bir soru bulmak için cevabı bilen birisi için kolay değil, ama aynı olduğunu kastediyorum. Ben cevabı bilmiyorum ve diğer sorunun yardımcı olmadığını okumuştum. – user997112

cevap

2

Evet, sanal işlevlerde satır içi kullanımı zaman kaybıdır. Bir sanal fonksiyon, fonksiyon göstergelerinden oluşan bir sanal fonksiyon tablosu aracılığıyla çağrılmalıdır. Satır içi bir işlev bir işaretçi tarafından çağrılmaz. Gerçek bir işlev olarak var olmak zorundadır.

Bazı istisnalar var. Arayanın tam nesne tipini bildiği durumlarda, sanal işlev tablosunu tamamen atlayabilir. Sanal anahtar kelimenin aşırı kullanımı çok yavaş kodla sonuçlanabilir. Derleyicinin üç veya dört küçük işlev çağrısını satır içi ve en iyi duruma getirebileceği durumlarda, sanal işlevlerle, gerçek işlev çağrıları yapmak zorundadır, bellekler hakkında varsayımlarda bulunmaz veya aramalar arasında kayıt durumunu yapmaz.