C++ 分配和构建5个对象

C++ 分配和构建5个对象,c++,C++,我有一段代码,用于分配和创建5个MyClass类型的对象: #include <iostream> #include <new> struct MyClass { int data; }; int main () { struct MyClass *p1=new MyClass[5]; p1->data=42; return 0; } #包括 #包括 结构MyClass{ int数据; }; int ma

我有一段代码,用于分配和创建5个MyClass类型的对象:

#include <iostream>     
#include <new>             
struct MyClass {
  int data;

};

int main () {

  struct MyClass *p1=new MyClass[5];
  p1->data=42;

  return 0;
}
#包括
#包括
结构MyClass{
int数据;
};
int main(){
结构MyClass*p1=新的MyClass[5];
p1->数据=42;
返回0;
}
因此,如果我理解正确,p1是指向存储这5个对象的大小为Myclass[5]的内存位置的指针。因此,通过使用p1->data=42,5个对象中的每个对象的int数据都会更新。如果是这样,我如何分别更新特定对象的数据?(假设是第3个对象)

更新: 如果你分配自己,正如HolyBlackCat所说:

p1[i].data = 42;
如果这不是作业,你不必使用新的

#include <vector>
struct MyClass {
    int data;

};
using MyClassVect_type = std::vector<MyClass>;

int main() {

    MyClassVect_type my_5(5);

    my_5.at(0).data = 37;
    my_5.at(1).data = 42;
    //or
    my_5[2].data = 13;
    //etc....

    return 0;
}
#包括
结构MyClass{
int数据;
};
使用MyClassVect_type=std::vector;
int main(){
MyClassVect_类型my_5(5);
my_5.at(0)。数据=37;
my_5.at(1).数据=42;
//或
my_5[2]。数据=13;
//等等。。。。
返回0;
}
因此,通过使用
p1->data=42
是针对5个对象中的每一个更新的
int
数据

不对<代码>p1指向这5个对象中的第一个。因此,
p1->data=42
只分配第一个对象的成员

如何单独更新特定对象的数据

您可以使用下标运算符访问同级对象:
p1[i]。data=42
指定数组中第
i
个对象的成员


另外,示例程序泄漏分配的内存


p.p.S.为了使用
新的
-表达式,不必包含标题

您至少可以先回答问题吗?
p1->data
仅适用于第一个对象。您需要
p1[i]。数据
@HolyBlackCat p1[2]。数据=4;即使p1是指针也有可能吗?嗨@Epitheoritis 32,p1是一个指针,括号中的内容就像一个对象。@Epitheoritis 32是的。实际上,它只在指针上工作(如果我们不考虑重载运算符)。将它应用于数组时,数组首先转换为指针。你说的泄漏分配的内存是什么意思?@Epitheoritis32使用
新的
-表达式创建的对象不会自动销毁。它们必须显式地
delete
d。如果
new
返回的指针在通过它删除对象之前丢失,则永远不能删除它。这称为内存泄漏。