Öncelikle, umarım C++ veya D'nin işletim sistemi dili olduklarında direttiğim düşünülmüyordur. Eğer uygun değillerse bunun nedenlerini doğru tesbit etmemiz gerekir.
Alıntı (jbytecode):
>Ancak C ve Assembly'de terminolojik olarak nesne üretmek kavramından bahsedemeyiz. (Evet her dilde object orientation taklit edilebilir. C 'de de durum böyledir.)
"Nesne" terimini yine yanlış kullanıyorum sanırım. Ben C yapılarının nesnelerine de nesne diyorum. Onların assembly dilinde de belleğin bir noktasında oluşturulmuş ve bir kaç veri yazılmış bölgeden farkları yoktur.
C++ bu konuda hiçbir ek bedel getirmez. C++'ta yapılar da sınıflar da hiçbir ek bedel getirmeden C kadar alt düzey kod üretmek için kullanılabilirler ve kullanılırlar da.
Alıntı:
>new ve delete operatörlerinin malloc ve free 'den fazlasını yaptığıdır.
Kesinlikle. Nasıl assembly ve C'de bellek ayrıldıktan sonra bir de oradaki baytlara bazı değerler yazılması gerekiyorsa (yani "kurulmaları" gerekiyorsa), C++'ın new'ü de aynısı yapar: bellek ayırır ve baytlara ilk değerleri verir (veya programcı istememişse vermez).
Alıntı:
>İşletim sistemi programcısının çoğu zaman istediği şey bir struct'ın (örneğin filesystem'de) belleğe alınması.
C++'ın güzelliği orada işte. :) Programcı bitlere istediği gibi hükmeder.
Alıntı:
>new, malloc'tan fazla iş yapıyor.
new, C'nin iki adımlık külfetini teke indirmiştir: yer ayır ve üyelere değer ata. (Ama programcı istemezse değer atanmaz.)
Alıntı:
>Bunun en büyük delillerinden biri yeterli bellek kontrolü için hata denetim mekanizması içermesi ve gerektiğinde bir bad_alloc exception fırlatması.
Onun için de standart new(nothrow) var: Hata atma bedeli de ödenmez.
Alıntı:
>Fazladan 20 ms bir gecikme işletim sisteminin yavaşlaması demektir. Önemsiz olmakla birlikte performans optimizasyonlarında göz önüne alınmaya değer bir durumdur.
Kesinlikle. C++'ın uygun olmadığı tarafları var(dır) ama benim bildiğim kadarıyla yukarıdakiler değil.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]