Son zamanlarda bu gibi kod üzerinde tökezledi:Derleyici, const_cast semantiklerini c stili kalıplarda devre dışı bırakmak için geçiş yapar mı?
void foo(const Bar* b) {
...
takes_nonconst_param_fn((Bar*)b);
...
Açıkçası, geliştirici ne yaptığını bilmiyordu, ama derleyici olsaydı sessizce c-style-döküm kabul ve en azından gerekli Uygun bir const_cast
, bunu yapmadan önce iki kez yapmış olabilir.
const_cast
anlambilimini önlemek için bir geçiş var mı, düşünme var?
O c-style-atmalarını tüm oluşumlarını engellemek için basitçe pratik değil ve izin gerekli bir kötülük var onların static_
ve reinterpret_
semantik (eğer yalnızca bazı kütüphane kodu için), ancak benim izlenimim, c- o meşru kullanımıdır constness uzağa atmak stil yayınları belki tamamen devre dışı bırakmak için mümkün olmalıdır, C++ kod üsleri nadirdir?
herhangi bir fark yaratır mı? – James
@James: Neden açık yayınların nasıl çalıştığını etkilemesini bekliyorsunuz? Eğer foo 'bir üye fonksiyon ise, o zaman nesne üyeleri 'const' fonksiyon içinde olur; değilse, o zaman bu bir hata olur. –
Aslında, hepsinden 'static_cast' formunu devre dışı bırakabilirdim. –