我必须在类的头文件中提到私有方法吗?
Do I have to mention private methods in the header file of a class?
目前我根本不使用头文件。每个类完全位于单个.cpp
文件中。但是为了节省编译时间,我现在想使用头文件。我希望Visual Studio不会编译那些没有为调试版本修改过的类。
是否有办法在头文件中只提到公共方法和成员?理论上,这对编译器来说已经足够了。如果另一个文件,比如main.cpp
包含类头文件,那么就不需要私有方法和成员了,是吗?
如何使用头文件而不重新输入私有方法和成员的名称?我想要这样做的原因是编码效率。当我想为另一个方法使用的类添加一个小的辅助函数时,我不希望还必须将它的签名添加到头文件中。
如果另一个文件,比如main.cpp包含类头,那么就不需要私有方法和成员了,是吗?
不,public
方法和成员不一定足够。例如,如果另一个.cpp
文件试图创建您的类的实例:
SomeClass instance;
编译器需要知道为SomeClass
分配多少内存。因此,它需要完全了解SomeClass
的私有数据成员。
你提出这个问题的方式让人听起来好像你想要反抗这种语言。我不认为这是个好办法。我认为最好的方法是按照你所选择的语言通常的方式来做事,只有在有特定的、清楚理解的需要时才会改变这种方式。
在c++中,事情通常是这样做的:整个类声明放在头文件中,并且定义以某种方式在头文件和相应的.cpp
文件之间分割。确切的分割取决于各种技术考虑。例如,模板和内联函数通常必须出现在头文件中。另一方面,将代码放在头文件中会增加依赖关系,并可能增加构建时间。
有很多方法可以解决这些问题。然而,由于这涉及到额外的复杂性,我认为只有在有明确可识别的需求时才应该这样做。
我不知道有什么方法可以做到你所要求的,但是有另一种方法可以提供一些隔离。您可能想了解一下痘痘习语,因为它提供了对私人信息的隔离。这是一点额外的工作,但它非常有用,特别是在大型项目中。
所有函数声明应该放在头文件中,所有函数定义应该放在cpp文件中。把声明放在cpp文件中不是好的编码习惯。
当你编写模板或内联函数时,你可以把定义放在头文件中。
一旦在头文件中声明了类,就必须在头文件中的类声明中声明其所有方法和成员,因为您的类不再在cpp文件中声明。
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 不带预处理器的调用方法/文件的文件名/行号
- 致命错误: Imlib2.h:没有这样的文件或目录,但我有这个文件
- Android NDK 中是否有异步文件 I/O
- UWP 是否有同步文件读/写 API
- 我的类中有方法的指针数组,但我不能调用我的方法.代码如下
- 在Visual Studio中,我不想提交我的Debug文件夹,但它中有dll文件,如果我移动它,项目将无法编译
- 如何处理一个子类有方法,而另一个没有方法的子类?
- 有方法的类,我不明白类的外观
- 是否有方法为模板参数指定所需的定义
- "Error C1083: Cannot open include file"但我有包含文件的路径
- c或c++中是否有头文件来实现图、树等数据结构
- 是否有方法将相对库路径添加到可执行文件以避免设置LD_library_path
- 是否有方法将所有赋值运算符(+=、*=等)转发为隐式使用重写的直接赋值运算符(=)
- 是否有方法使用vector的内容作为键和自定义值来初始化unordered_map ?
- 在调用main函数之前,是否有方法解析命令行选项?
- Qt:有共享文件夹的类吗?
- 在c++中是否有方法对成员变量(类)进行后期初始化?
- 是否有方法为任何指针类型定义转换操作符