是否应该在头文件中声明所有的结构和类?如果我在源文件中声明一个结构体/类,那么我需要在头文件中放置什么,以便可以在其他文件中使用它?另外,是否有任何资源显示了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