C++ 如何调用销毁函数? #包括 使用名称空间std; 类怪物{ 公众: 怪物(){cout

C++ 如何调用销毁函数? #包括 使用名称空间std; 类怪物{ 公众: 怪物(){cout,c++,constructor,destructor,C++,Constructor,Destructor,这里创建了三个对象,每个对象都调用了默认构造函数。这就是为什么您会看到带有out参数的消息。 m =new Monster[3]; 首先,使用Monster(int)构造函数在右侧创建临时怪物。这就是为什么您会看到消息Monster created。接下来,调用赋值操作符。接下来,删除临时怪物。这就是为什么您会看到Monster destroming。 m[i] = i; 阵法中的三个怪物被摧毁 为了更好地理解这种情况,我建议您在所有邮件中添加此的地址 这里创建了三个对象,每个对象都调用了

这里创建了三个对象,每个对象都调用了默认构造函数。这就是为什么您会看到带有out参数的消息。

m =new Monster[3];
首先,使用
Monster(int)
构造函数在右侧创建临时怪物。这就是为什么您会看到消息
Monster created。
接下来,调用赋值操作符。接下来,删除临时怪物。这就是为什么您会看到
Monster destroming。

m[i] = i;
阵法中的三个怪物被摧毁


为了更好地理解这种情况,我建议您在所有邮件中添加此的地址

这里创建了三个对象,每个对象都调用了默认构造函数。这就是为什么您会看到带有out参数的消息。

m =new Monster[3];
首先,使用
Monster(int)
构造函数在右侧创建临时怪物。这就是为什么您会看到消息
Monster created。
接下来,调用赋值操作符。接下来,删除临时怪物。这就是为什么您会看到
Monster destroming。

m[i] = i;
阵法中的三个怪物被摧毁



为了更好地理解这种情况,我建议您在所有邮件中添加此的地址。

您应该对复制和移动构造函数(以及作业)进行注释,以获得更清晰的图片。它们将使您更好地了解代码中浮动的临时对象等。
m[I]=i;
您正在将整数存储到指针数组中,这真的是您想要的吗?这是一个“嘈杂的”
怪物的示例,
…有些日子,您最好使用
std::vector
而不是使用指针来做这类事情…@Niall,如果这是
(*m[i])=i
。您应该对复制和移动构造函数(以及赋值)进行注释,以获得更清晰的图像。它们会让您更好地了解代码中浮动的临时变量等。
m[i]=i;
您正在将整数存储到指针数组中,这真的是您想要的吗?这是一个“嘈杂”的示例
Monster
…有时候你最好使用
std::vector
而不是使用指针来做这类事情…@Niall如果那是
(*m[i])=i
。击败我。;)构造的临时对象被移动分配到数组中,但临时对象本身仍在被销毁。移动分配不移动对象本身,而只是移动其资源的所有权。击败我。;)构造的临时对象被移动分配到数组中,但是临时对象本身仍在被销毁。移动分配不会移动对象本身,而只是移动其对资源的所有权。