具有显式初始化程序的类的内存分配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有显式初始化程序的类的内存分配相关的知识,希望对你有一定的参考价值。

当我为某些整数分配内存时,我是这样进行的:

int* pointer = new int[10];

同样的东西也适用于类对象指针:

int dim = 5;
Complex* vect = new Complex[dim];

但是,如果说我有一个带有显式初始化程序的类,像这样:

class Vec
{
private:
    int dim;
    Complex *vect;
public:
    Vec(int n):dim(n){
        vect=new Complex[dim];
    }
};

然后初始化该类对象的指针并为其中的5个分配内存的正确语法是什么?

Vec* u=new Vec(dim)[5];

似乎不是正确的语法。

谢谢。

答案

它将是:

Vec* u = new Vec[5]{Vec(4), Vec(8), Vec(15), Vec(16), Vec(23)};

但更喜欢std::vector

以上是关于具有显式初始化程序的类的内存分配的主要内容,如果未能解决你的问题,请参考以下文章

类加载器 - 类的加载连接与初始化

Unix系统编程()进程内存布局

Java 虚拟机程序执行:02 虚拟机的类加载机制

java中的类的加载连接初始化

使用显式定义的默认构造函数将 unique_ptr 的类内成员初始化程序设置为 nullptr 错误

java内存区域