假设我有一个类引擎,看起来像这样:

class Engine
{
  public:
  private:
     Game * m_pGame;
}

然后,我想为其构造函数使用初始化列表:
// Forward declaration of the function that will return the
// game instance for this particular game.
extern Game * getGame();

// Engine constructor
Engine::Engine():
  m_pGame(getGame())
{

}
m_pGame的初始化程序明智吗?

我的意思是-使用函数初始化构造函数中的成员变量可以吗?

最佳答案

初始化程序列表并不关心值如何到达那里。您需要担心的是确保提供合理的值。如果getGame()肯定会返回有效的指针,则没有理由会出现问题。

也许更好的问题是,为什么不先调用getGame并将其作为参数传递呢?例如:

Engine::Engine(Game* game):
  m_pGame(game)
{
}

// later...
Engine* the_engine = new Engine(getGame());

这样可以为您将来配置引擎提供更大的灵活性,并且不会硬编码对getGame函数的依赖关系。

关于c++ - 将函数传递给构造函数中的初始化列表有多明智?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17701908/

10-13 06:52