Bu hem C ++ hem de C'de tanımlanır. Sonuçta ortaya çıkan işaretçiyi geri çevirmemesi nedeniyle katı takma düzenlemelerini ihlal etmez.
İşte C ++ 'dan (@interjay ve @VTT sayesinde) alıntı:
Bir nesne işaretçisi, açıkça farklı türde bir nesne işaretçisine dönüştürülebilir.
İşte bunu sağlayan C (teşekkürler @StoryTeller) alıntı :
Bir nesne türüne işaretçi farklı bir nesne türüne işaretçi olarak dönüştürülebilir.
Bunlar, bir işaretçi türünün sonuç olmadan başka bir işaretçi türüne dönüştürülebileceğini (ve sonra isteğe bağlı olarak geri dönüştürülebileceğini) belirtir.
İşte POSIX'in bu özel duruma izin veren alıntısı :
Sockaddr_in yapı İnternet adresi ailesi için adresleri saklamak için kullanılır. Bu tipteki göstergeler soket işlevleriyle kullanım için sockaddr * yapılandırması uygulamaları tarafından kullanılır.
Bu işlev ( bind) C standart kitaplığının bir parçası olduğundan, içeride ne olursa olsun (özellikle, tip döküm işaretçisinin kaydının kaldırılması) tanımlanmamış bir davranış yoktur.
Daha genel soruyu cevaplamak için:
C ve C ++ iki farklı dildir. C ile tanımlanmış ancak C ++ ile tanımlanmamışsa, C ile tanımlanmış ancak C ++ ile tanımlanmamıştır. İki dil arasında hiçbir örtük uyumluluk bunu değiştirmeyecektir. C'de iyi tanımlanmış ancak C ++'da tanımlanmamış bir kod kullanmak istiyorsanız, bu kodu derlemek için bir C derleyicisi kullanmanız gerekir.