C++当我们创建对象时,构造函数会初始化,但是如果我想再次重新初始化对象,请在 main 的某个时候说该怎么做

In C++ when we create object the constructor initializes, but if I want to reinitialize the object again, say at some point in main, what to do?

本文关键字:初始化 对象 请在 main 构造函数 创建对象 我们 C++ 如果      更新时间:2023-10-16

例如,我有以下示例代码:

class Player
{
   int grid;
   Player()
   {
      grid = 0;
   }
}
void main()
{
   Player p;
   ...
   ...
   //now again I want to initialize p here, what to write ?
}

如何再次调用 p 的构造函数?

将对象放入本地范围:

while (running)
{
    Player p;  // fresh
    //...
}

每次执行循环体时,都会实例化一个新的Player对象。

class Player
{
   int grid;
   Player()
   {
      grid = 0;
   }
}
void main()
{
   Player p;
   ...
   ...
   //now again I want to initialize p here, what to write ?
   p = Player();
}

添加init函数。在构造函数中调用它,但也要将其公开,以便稍后可以再次调用它。

实际上,您可以制作任何想要更改状态的函数:

class Player
{
public:
    void setState(/*anything you want*/) {}
};

强化了安德鲁的回答:

class Player
{
public:
    Player()
    {
        reset(); //set initial values to the object
    }
    //Must set initial values to all relevant fields        
    void reset()
    {
        m_grid = 0; //inital value of "m_grid"
    }
private:
    int m_grid;
}

int main()
{
    Player p1;
    Player* p2 = new Player();
    ...
    ...
    p1.reset(); 
    p2->reset(); //Reset my instance without create a new one.
}