ile Döküm, derleyici void*
işaretçi türü Derived
ait olduğunu bilmeden BaseA*
(veya BaseB*
) için void*
işaretçisi döküm edebilir?birden miras
cevap
Yapmıyor. Bir static_cast
kullanılarak bir void*
gelen döküm tek garanti:
tipi işaretçi değeri orijinal değere sahip olacaktır için "işaretçi
cv void
için" ve orijinal işaretçi türüne dönüştürülür nesne (C + +03 §5.2.9/10).struct B1 { int i; }; struct B2 { int j; }; struct D : B1, B2 { }; D x; B1* b1ptr = &x; void* voidptr = b1ptr; B2* b2ptr = static_cast<B2*>(voidptr);
girişiminde:
void*
orijinal işaretçi tür dışında bir tür atama çünkü Örneğin
, şu kod yanlış (>B2*
- ->void*
döküm sekansı B1*
olduğu) b2ptr
kullanmak burada tanımlanmamış davranışlarla sonuçlanır. voidptr
güvenli bir şekilde yayınlayabileceğiniz tek tür, B1*
'dir, çünkü bu, void*
öğesinin alındığı türden bir şeydir (iyi ya da char*
aracılığıyla, bir şey char*
aracılığıyla erişilebilir).
Derleyici, void*
işaretçisini hiçbir şeye göstermez - siz, programcı, yapın. Bir void*
pointer ile yararlı bir şey yapmak için
, bir sivil void*
işaretçi açıkça döküm onu gerekiyor ve aslında gösteren işaretçi tipi konusunda yanılıyorsun, sen Tanımsız Davranış Şehir girmek .
- 1. base.Method() birden fazla miras düzeyiyle çağrılmıyor mu?
- 2. Harita miras
- 3. çözülebilir - miras
- 4. __slots__ öğesini tanımlayan birden fazla sınıftan miras alınamaz mı?
- 5. C++ Birden çok farklı dönüş türüne sahip arabirimlerden miras alınır?
- 6. Java enum miras
- 7. PostgreSQL rolü miras çalışmıyor?
- 8. Seçici miras C++
- 9. acemi miras sorumlusu
- 10. ES6 modülleri ve miras
- 11. .aspx sayfalarını miras alıyorsunuz?
- 12. sarılmış tipin örneğini "Miras"
- 13. Parametrelere Metaclass Miras
- 14. PostgreSQL miras mı?
- 15. Java arayüzü ve miras
- 16. Miras sınıfını, temel sınıf
- 17. Yönerge, aşırı yüklenmeler kullanarak özel miras mı?
- 18. Log4net - miras kullanırken optimum strateji
- 19. Miras bellek depolaması olan nesneler
- 20. Özel miras: ad arama hatası
- 21. Soyut sınıftan miras kalan sınıflar
- 22. Miras veya kompozisyon kullanmalı mıyım?
- 23. C++ şablon sınıfı ve miras
- 24. C# miras İki arayüzleri var
- 25. gcc 4.5.1 sanal miras sorunu
- 26. Django'da yabancı temel miras mı?
- 27. Neden miras ile eşitlik kullanmamalıyım?
- 28. Screeps nesnelerinde miras nasıl uygulanır?
- 29. Javascript, prototype miras almayan prototip
- 30. Mybatis - Miras edilen özellikler eşlenmiyor
Cevabınız doğru. Araştırmamdan, Türetilmiş, BaseA ve BaseB'yi genişletiyorsa, nesne bellekte | BaseA | BaseB | Derived |. Böylece, işaretçi BaseA'nın başlangıcına işaret ediyor, bu yüzden BaseB'den türetilmiş bir döküm, BaseA'nın üyelerini okuyacaktır. – Chazz