我一直将头文件视为描述类的一种“公共接口”,在这种情况下,最好将私有字段和函数保存在.cpp文件中。
我知道私有字段需要在头文件中声明,以便其他类可以知道类实例将占用多少内存,但是当我要编写一个私有辅助函数时,我想到这个函数可以被定义为静态函数,这样它就不需要成为类的一部分了。它可以轻松地成为类定义的.cpp文件中的常规函数。
我意识到所有私有函数都可以通过接受指向类字段的指针/引用来重写为静态函数,而无需期望在类中定义。
这将消除在头文件中声明任何私有函数的需要。
我喜欢遵循惯例,那么在C++中,非静态私有函数是否应该放在头文件中?静态函数或静态常量呢?
我会放一些代码来解释我的意思:
.h文件:
#ifndef SOME_CLASS_H
#define SOME_CLASS_H
class SomeClass
{
private:
int x;
public:
void combineWithX(int y);
};
#endif
.cpp 文件
#include "SomeClass.h"
void someHelper(int* x)
{
*x = (*x) + 1;
}
void SomeClass::combineWithX(int y)
{
someHelper(&x);
x += y;
}
请注意,.cpp文件中的someHelper(int* x)
函数间接引用了私有成员变量x,因此不需要出现在头文件中。我想知道这种写法是否被认为是“不好的风格”。