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?
例如,我有以下示例代码:
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.
}
相关文章:
- C++使用整数的压缩数组初始化对象
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 在 c++ 中初始化对象
- C++ 手动分配和初始化对象
- 使用运算符"="在C++中用值初始化对象
- 当我不需要数据库中的所有值时,如何部分初始化 c++ 对象?
- 如何初始化对象数组?
- 在C++中使用默认构造函数初始化对象的不同方法
- 使用默认构造函数初始化对象的不同方法
- 是否可以在编译时初始化对象的 C 样式函数指针,以便它调用对象的成员函数?
- 如何在线程中初始化对象,然后在其他地方使用它?
- 在没有默认构造函数时使用垃圾数据初始化对象
- 如果在 C++ 构造函数中以错误的顺序初始化对象数据,会发生什么类型的错误
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 在 c++ 中复制对未初始化对象的引用
- 在成员变量在另一个文件中发生更改后,调用与初始化对象分开的函数
- 在不放置新运算符的情况下,在预分配的内存上使用虚函数初始化对象 - 这可能吗?如果没有,为什么
- 复制 CTOR 与赋值运算符以初始化对象(性能)
- 当您通过分配初始化C 对象时会发生什么
- 获取未初始化对象成员的地址是否定义良好?