繁体   English   中英

我是否必须在类的头文件中提及私有方法?

[英]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文件中声明了

我不知道如何做你要问的方法,但还有另一种方法可以让你有些孤立。 您可能想看一下pimpl习语,因为它提供了有关私人信息的隔离。 这是一些额外的工作,但它非常有用,特别是在大型项目中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM