我有这样的标题(标题警卫未显示):
class GameSystem
{
public:
GameSystem(Game *pcGame);
virtual ~GameSystem();
void Setup();
private:
void InitGame();
void RunGame();
void ExitGame();
Game *m_pcGame;
/* Properties */
int m_nWidth;
int m_nHeight;
int m_nFps;
bool m_bFullscreen;
};
我在哪里可以为InitGame()
,RunGame()
和ExitGame()
定义正文?我可以在.cpp
文件中定义它吗?如果是这样,怎么样?或者我是否有义务在我的.h
文件中制作自己的身体?
我正在使用Eclipse,我开始输入:void GameSystem::
,然后它不会建议私有函数。
答案 0 :(得分:13)
通常,您会在.cpp
文件中定义公共和私有函数。
在.h
文件中定义函数的一个原因是,如果您希望它们是可内联的。
答案 1 :(得分:12)
是的,您可以在.cpp文件中定义。只需将#include "MyHeader.h"
放在文件的开头即可。你还需要像这样启动每个功能
void GameSystem::Init(){
//stuff
}
答案 2 :(得分:2)
我认为您担心private
函数应该是私有的,其含义是“在标题中不可见(这是接口)”。
但private
表示“无法从课外访问”,即只有课程的职能可以调用private
个函数。
如果您不希望班级的(人类)用户看到这些实现细节,则需要使用合适的设计模式(例如,外观模式)。
答案 3 :(得分:0)
在.h
中定义意味着内联,但在.cpp
中定义并使用前向声明,您可以提高编译效率。