是否應該在頭文件中聲明所有的結構和類?如果我在源文件中聲明一個結構體/類,那麼我需要在頭文件中放置什麼,以便可以在其他文件中使用它?另外,是否有任何資源顯示了C++的一些標準實踐?哪裏申報結構等?
Q
哪裏申報結構等?
6
A
回答
5
應該在頭文件中聲明所有結構體和類嗎?
是的。編輯:但他們的實現應該在cpp文件中。有時,來自C#或Java的用戶不會意識到C++中的實現可以完全獨立於類聲明。
如果我在一個源文件中聲明一個結構體/類,我需要在頭文件中放入什麼,以便它可以在其他文件中使用?
你不能。編譯器需要在使用該類的任何翻譯單元中提供的類的完整聲明。
此外,是否有任何資源顯示C++的標準做法?
你可以下載任何數量的開源應用程序的源代碼來查看。雖然你可能會看到唯一完全一致的東西,那就是使用標題守護進程,並在頭文件中保存所有的聲明。
2
頭文件的要點是聲明要在其他源文件之間共享的接口。通常,人們在頭文件中聲明抽象類型,並根據需要在源文件中實現它們。這意味着,當然新實現的類型只能用於特定的源文件。如果你需要跨多個文件使用類型(通常是這種情況),那麼你需要使用頭文件。
C++ faq通常是最佳實踐的重要資源。
相關問題
- 1. cout在哪裏申報?
- 2. cvarrToMat在哪裏申報?
- 3. 申報點結構
- 4. 申報和結構用C
- 5. 申報結構的Perl
- 6. 申報結構難度
- 7. 從rake db:structure:dump的結構來自哪裏?
- 8. asp.net的MVC從哪裏把結構
- 9. Xcode構建結果文件在哪裏?
- 10. Javascript:高級數據結構在哪裏?
- 11. 已申報未申報的標識符?
- 12. 結構和結構的對象在類中屬於哪裏?
- 13. 申報空/默認構造函數
- 14. 在哪裏使用報價?
- 15. 我在哪裏申報啓動應用程序的變量,訪問ViewController屬性?
- 16. SSRS報告:報告在哪裏處理?
- 17. GL_UNSIGNED_SHORT_5_6_5未申報?
- 18. NSMatrix未申報
- 19. 「CCFadeTransition」未申報
- 20. editedObject未申報
- 21. 'CAIRO_GOBJECT_TYPE_SURFACE' 未申報
- 22. SeckeychainItemref未申報
- 23. kAudioFormatAppleIMA4未申報
- 24. MKAnnotation未申報
- 25. Cocos2D:moveBy未申報?
- 26. 財產申報
- 27. 申請報告
- 28. NSForegroundColorAttributeName未申報
- 29. 哪些代碼應該去哪裏在MVC結構
- 30. SSRS報告結構
如果沒有在其他源文件中使用它的結構,則結構不必是頭文件。爲STL算法編寫的函子就是這樣一個例子。 – Naveen 2010-04-05 12:57:05
我使用了很多結構體,它們都是實現細節 - 在.cpp文件中聲明 – 2010-04-05 13:02:45
-1 Naveen和Neil都給出了爲什麼不應該在頭文件中聲明* ALL *結構體的原因。 OP的問題給出了一個誤導性的答案,特別是對於新手來說。 – 2010-04-05 13:10:48