Tasarımı ve nesne yönelimli bir programlama dili implenting, bazı nokta birinde temel türleri uygulama hakkında bir seçim (gibi yapmalıdır int
, float
, double
sınıflar ya da başka bir şey olarak veya eşdeğerleri). Açıkçası, C ailede diller eğilimi olmayan (Java özel ilkel türleri, değişmez yapılar olarak onları C # uygular, vb vardır) sınıfları olarak tanımlamak.
Temel türler sınıf olarak uygulandığında (birleşik bir hiyerarşiye sahip bir tür sisteminde) çok önemli bir avantaj düşünebilirim: bu türler kök türünün uygun Liskov alt türleri olabilir. Bu nedenle, dili boks / unboxing (açık veya kapalı), ambalaj türleri, özel değişkenlik kuralları, özel davranış vb.
Tabii ki, dil tasarımcılarının neden böyle karar verdiklerini kısmen anlayabiliyorum: sınıf örnekleri, uzamsal bir ek yüke sahip olma eğilimindedir (çünkü örnekler, bellek düzeninde boş veya başka bir meta veri içerebilir), ilkellerin / yapıların gerekmediğini var (eğer dil bunlar üzerinde mirasa izin vermiyorsa).
Mekansal verimlilik (ve özellikle geniş dizilerde geliştirilmiş mekansal konum) temel türlerin genellikle sınıf olmaması için tek neden midir?
Genelde cevabın evet olduğunu varsaydım, ancak derleyiciler kaçış analizi algoritmalarına sahipti ve bu nedenle bir örnek (yalnızca temel bir tür değil) kesin olarak kanıtlandığında, uzamsal yükü (seçici olarak) ihmal edip edemeyeceklerini tespit edebiliyorlar. yerel.
Yukarıdaki yanlış mı, yoksa kaçırdığım bir şey mi var?