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

dan*_*jar 9 c++ class header-files

现在我根本不使用头文件.类.cpp完全位于单个文件中.但是为了节省编译时间,我现在想要使用头文件.我希望Visual Studio不会编译那些未针对调试版本进行修改的类.

有没有办法在头文件中仅提及公共方法和成员.从理论上讲,这将是编译器的足够信息.如果另一个文件,比如main.cpp包括类头,则不需要私有方法和成员,是吗?

如何在不重新输入私有方法和成员名称的情况下使用头文件?我想要的原因是编码效率.当我想要为另一个方法使用的类添加一个小帮助函数时,我不想也必须将它的签名添加到头文件中.

NPE*_*NPE 11

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

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

SomeClass instance;
Run Code Online (Sandbox Code Playgroud)

除其他事项外,编译器需要知道要分配多少内存SomeClass.为此,它需要完全了解SomeClass私人数据成员.

你构建问题的方式让人觉得你好像打算用语言来对抗.我认为这不是一个很好的方法.我认为最好的方法是按照您选择的语言以通常的方式做事情,并且只有在有明确理解的特定需求时才会离开.

通常在C++中完成的方式是整个类声明都在头文件中,并且定义在某种程度上分割在头文件和相应的.cpp文件之间.确切的划分由各种技术考虑决定.例如,模板和内联函数通常必须出现在头文件中.另一方面,将代码放在头文件中会增加依赖性并可能增加构建时间.

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


Joh*_*ter 4

我不知道有什么方法可以做到你所要求的,但还有另一种方法可以提供一些隔离。您可能想看看pimpl 习惯用法,因为它提供了有关私人信息的隔离。这是一些额外的工作,但它非常有用,尤其是在大型项目中。