我必须在类的头文件中提到私有方法吗?

Do I have to mention private methods in the header file of a class?

本文关键字:有方法 文件      更新时间:2023-10-16

目前我根本不使用头文件。每个类完全位于单个.cpp文件中。但是为了节省编译时间,我现在想使用头文件。我希望Visual Studio不会编译那些没有为调试版本修改过的类。

是否有办法在头文件中只提到公共方法和成员?理论上,这对编译器来说已经足够了。如果另一个文件,比如main.cpp包含类头文件,那么就不需要私有方法和成员了,是吗?

如何使用头文件而不重新输入私有方法和成员的名称?我想要这样做的原因是编码效率。当我想为另一个方法使用的类添加一个小的辅助函数时,我不希望还必须将它的签名添加到头文件中。

如果另一个文件,比如main.cpp包含类头,那么就不需要私有方法和成员了,是吗?

不,public方法和成员不一定足够。例如,如果另一个.cpp文件试图创建您的类的实例:

SomeClass instance;

编译器需要知道为SomeClass分配多少内存。因此,它需要完全了解SomeClass的私有数据成员。

你提出这个问题的方式让人听起来好像你想要反抗这种语言。我不认为这是个好办法。我认为最好的方法是按照你所选择的语言通常的方式来做事,只有在有特定的、清楚理解的需要时才会改变这种方式。

在c++中,事情通常是这样做的:整个类声明放在头文件中,并且定义以某种方式在头文件和相应的.cpp文件之间分割。确切的分割取决于各种技术考虑。例如,模板和内联函数通常必须出现在头文件中。另一方面,将代码放在头文件中会增加依赖关系,并可能增加构建时间。

有很多方法可以解决这些问题。然而,由于这涉及到额外的复杂性,我认为只有在有明确可识别的需求时才应该这样做。

我不知道有什么方法可以做到你所要求的,但是有另一种方法可以提供一些隔离。您可能想了解一下痘痘习语,因为它提供了对私人信息的隔离。这是一点额外的工作,但它非常有用,特别是在大型项目中。

所有函数声明应该放在头文件中,所有函数定义应该放在cpp文件中。把声明放在cpp文件中不是好的编码习惯。

当你编写模板或内联函数时,你可以把定义放在头文件中。

一旦在头文件中声明了类,就必须在头文件中的类声明中声明其所有方法和成员,因为您的类不再在cpp文件中声明。

相关文章: