我在哪里可以为私人功能定义身体?

时间:2010-06-18 13:05:08

标签: c++

我有这样的标题(标题警卫未显示):

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::,然后它不会建议私有函数。

4 个答案:

答案 0 :(得分:13)

通常,您会在.cpp文件中定义公共私有函数。

.h文件中定义函数的一个原因是,如果您希望它们是可内联的。

答案 1 :(得分:12)

是的,您可以在.cpp文件中定义。只需将#include "MyHeader.h"放在文件的开头即可。你还需要像这样启动每个功能

void GameSystem::Init(){
     //stuff
}

答案 2 :(得分:2)

我认为您担心private函数应该是私有的,其含义是“在标题中不可见(这是接口)”。 但private表示“无法从课外访问”,即只有课程的职能可以调用private个函数。 如果您不希望班级的(人类)用户看到这些实现细节,则需要使用合适的设计模式(例如,外观模式)。

答案 3 :(得分:0)

.h中定义意味着内联,但在.cpp中定义并使用前向声明,您可以提高编译效率。

见这里:http://en.wikipedia.org/wiki/Forward_declaration