Tüm yapı ve sınıflar başlık dosyasında bildirilmelidir? Bir kaynak dosyasında bir struct/class bildirirsem, başka dosyalarda kullanılabilmesi için header dosyasına ne koymam gerekir? Ayrıca, orada C++ bazı standart uygulamaları gösteren herhangi bir kaynak var mı?Yapıları, vb. Bildirmek Nerede?
cevap
Tüm yapı ve sınıflar başlık dosyasında bildirilmelidir?
Evet. DÜZENLEME: Ama onların uygulamaları cpp dosyalarında olmalıdır. Bazen C# veya Java'dan gelen kullanıcılar C++ uygulamasındaki uygulamanın sınıf beyanından tamamen ayrı olabileceğini fark etmez.
Bir kaynak dosyasında bir yapı/sınıf bildirirsem, başka dosyalarda kullanılabilmesi için başlık dosyasına ne koymam gerekir?
Yapamazsınız. Derleyici, bu sınıfı kullanan herhangi bir çeviri biriminde bulunan bir sınıfın tam beyanına ihtiyaç duyar.
Ayrıca, orada bazı standart C++ uygulamalarını gösteren herhangi bir kaynak var mı?
Görmek için istediğiniz sayıda açık kaynaklı uygulama için kaynak indirebilirsiniz. Görmeniz gereken tek tamamen tutarlı olan şey, başlık muhafızlarını kullanmak ve tüm beyanları başlık dosyalarında tutmaktır.
Başlık dosyalarının tüm noktası, diğer kaynak dosyalarda paylaşılmak istenen arabirimlerin bildirilmesidir. Çoğu zaman, insanlar başlık dosyalarında soyut tipler bildirir ve bunları gerektiği gibi kaynak dosyalarına uygularlar. Bu, elbette, yeni uygulanan tipin sadece o kaynak dosya için mevcut olacağı anlamına gelir. Birden fazla dosyada bir tür kullanmanız gerekiyorsa (ki bu genellikle böyle olur), daha sonra başlık dosyalarını kullanmanız gerekir. En iyi uygulamalar için genellikle harika bir kaynaktır.
- 1. Çizim C/C++ yapıları, işaretçiler, vb için hızlı çizim araçları
- 2. Yapıları NSData Yapıları?
- 3. Test eşzamanlı veri yapıları
- 4. Farklı veri yapıları ve karmaşıklıkları
- 5. belgelemek için nasıl JavaScript/CoffeeScript veri yapıları
- 6. VB
- 7. vb
- 8. VB
- 9. Denetleyicileri bildirmek için Açısal Düzenleme
- 10. Iletim bildirimini almayi bildirmek için
- 11. Diğer yapıları içeren ikili dosyadan yapıları okuma ve yazma (C)
- 12. Kakao yapıları ve NSMutableArray
- 13. Yuvalama yapıları Datomic ile
- 14. İndirme yapıları: Travis
- 15. Boru yapıları hatası
- 16. Jenkins matrix yapılandırma yapıları
- 17. /.NET yapıları bekliyor 4.0
- 18. scala'daki özyinelemeli yapıları ayrıştırma
- 19. Cython'da C yapıları oluşturma
- 20. Ortak veri yapıları için referans birim testleri?
- 21. Mockito yapıları için ithalat statik ifadelerini bulma
- 22. Ruby'de ağaç ve grafik veri yapıları
- 23. Birleştirme iki kompleks veri yapıları
- 24. C++: Yapıları bir yığında depolamak
- 25. İşaretçileri kullanarak yapıları yanlış olsun
- 26. Gitlab CI Yapıları (Gitlab 8.6.5)
- 27. Objective-C'de veri yapıları nelerdir?
- 28. Java'da ağaç yapıları nasıl saklanır?
- 29. STL konteynerlerinin veri yapıları eşdeğerleri
- 30. SEO tarayıcılarının etkinliklerini bildirmek için rollbar nasıl engellenir?
Başka bir kaynak dosyasında kullanmayla ilgili bir amaç yoksa bir yapının başlık dosyaları olması gerekmez. STL algoritması için yazılmış bir functor böyle bir örnektir. – Naveen
Uygulama ayrıntıları olan çok sayıda yapı kullanıyorum - bunlar .cpp dosyalarında bildirildi. –
-1 Naveen ve Neil, neden * ALL * yapılarının başlıklarda belirtilmemesinin nedenlerini verdiler. OP'nin sorularına evet, özellikle yeni başlayanlar için yanıltıcı bir cevap veriyor. –