分配和构造5个对象

时间:2019-05-19 21:44:43

标签: c++

我有一段代码可以分配并创建5个MyClass类型的对象:

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

};

int main () {

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

  return 0;
}

因此,如果我正确理解,p1是指向存储这5个对象的Myclass [5]大小的内存位置的指针。因此,通过使用p1-> data = 42是为5个对象中的每一个更新的int数据如果是这样,我如何单独更新特定对象的数据?(假设第三个对象)

2 个答案:

答案 0 :(得分:3)

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

p1[i].data = 42;

Bu,如果这不是一项任务,并且您不必使用new ...

#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;
}

答案 1 :(得分:2)

  

因此,使用p1->data=42是针对5个对象中的每个对象更新的int数据。

不正确。 p1指向这5个对象中的第一个。因此,p1->data=42仅分配第一个对象的成员。

  

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

您可以使用下标运算符访问兄弟对象:p1[i].data = 42分配数组中第i个对象的成员。


P.S。该示例程序泄漏了分配的内存。

P.P.S。不必包含标题<new>即可使用new表达式。