假设我有一个类引擎,看起来像这样:
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/