C ++ 'da istisnalar gibi özellikler tüm programınızı etkiler: programınızın tamamında bunları devre dışı bırakabilir veya kodunuz boyunca bunlarla uğraşmanız gerekir. Bir olarak ünlü C ++ Raporuna makale koyar:
Sezgisel olarak, kodlama istisnalarının zor kısmı açık atışlar ve yakalamalar değildir. İstisnaları kullanmanın gerçekten zor kısmı, araya giren tüm kodu, keyfi bir istisnanın atış sitesinden işleyicisine yayılabileceği şekilde, güvenli bir şekilde ve programın diğer bölümlerine zarar vermeden yazılmasıdır.
new
İstisnalar bile attığı için, tüm projenizde istisnaları tamamen devre dışı bırakmadıkça , her işlevin temel istisna güvenliği sağlaması gerekir - yalnızca istisna atmayı garanti etmeyen işlevleri çağırmazsa .
Bu nedenle, istisnalar bir "tüm program" veya "tüm takım" özelliğidir, çünkü bunları kullanan bir takımdaki herkes tarafından anlaşılmalıdır. Ama bildiğim kadarıyla tüm C ++ özellikleri böyle değil.
Olası bir örnek, şablon almazsam ancak bunları kullanmazsam, yine de doğru C ++ yazabiliyorum - yoksa almayacak mıyım ?. Hatta sort
bir dizi tamsayı arayabilir ve inanılmaz hız avantajı wrt'ın keyfini çıkarabilirim. C'ler qsort
(çünkü hiçbir fonksiyon işaretçisi çağrılmaz), risk almadan - ya da değil? Görünüşe göre şablonlar "tam takım" değil.
Kodu doğrudan kullanmayan ve dolayısıyla "tüm ekip" i etkileyen başka C ++ özellikleri var mı? Özellikle C'de bulunmayan özelliklerle ilgileniyorum.
Güncelleme : Özellikle, farkında olmanız gereken, dili uygulayan bir işaretin olmadığı özellikleri arıyorum. İlk takım olan doğruluktan bahsettiğim ilk cevap, bu yüzden herkesin bunu öğrenmesi gerekiyor; ancak, AFAICS yalnızca işaretli bir işlevi çağırırsanız sizi etkiler const
ve derleyici onu const olmayan nesnelerde çağırmanızı önler, böylece google'a bir şey alırsınız. İstisnalar dışında, bunu bile elde edemezsiniz; dahası, kullandığınız anda daima kullanılırlar new
, bu nedenle istisnalar daha “sinsidir”. Ancak bunu objektif olarak ifade edemediğim için, tüm ekip özelliklerini takdir edeceğim.
Güncelleme 2 : C ++ özelliği yerine, çok sayıda anaakım programlama dili için geçerli olan çoklu iş parçacığı gibi şeyleri hariç tutmak için "C ++ 'a özgü özellik" gibi bir şey yazmalıydım.
Ek: Bu soru neden nesneldir (merak ediyorsanız)
C ++ karmaşık bir dildir, bu nedenle birçok proje veya kodlama kılavuzu "basit" C ++ özelliklerini seçmeye çalışır ve birçok kişi bazılarını çoğunlukla öznel kriterlere göre eklemeye veya hariç tutmaya çalışır. Bu konuda sorular doğru burada SO üzerinde düzenli olarak kapalı olsun.
Yukarıda, bunun yerine, (tam olarak olabildiğince) bir "tüm ekip" dil özelliğinin ne olduğunu tanımladım, bir örnek (istisnalar), C ++ ile ilgili literatürde kapsamlı destekleyici kanıt sağladım ve C ++ 'da tüm ekip özelliklerini istedim istisnaların ötesinde.
"Tüm ekip" özelliklerini kullanmanız ya da bunun ilgili bir kavram olup olmaması öznel olabilir - ancak bu sadece bu sorunun öneminin her zamanki gibi öznel olduğu anlamına gelir.