如何在构造函数中初始化分配的堆可变量

How to initialize a heap allocated varible in the constructor

本文关键字:变量 分配 初始化 构造函数      更新时间:2023-10-16

这是我的"代码":

class a{
    int *var=new int;
public:
    a(int i):*var(5){};
    ~a(){}
};

现在,这当然不起作用。如何从构造函数初始化堆变量?(我不想在构造函数内分配堆变量)

喜欢:

class a{
    int *var;
public:
    a(int a):var(new int(5)){};
    ~a()
    {
        delete var;
    }
}

内存分配需要在构造函数中进行。另外,您需要确保您在毁灭者中进行交易。

请注意您的参数a不使用构造函数。如果您的意思是初始化类变量a的值,则应将分配调用更改为new var(a)

注2:除非您特别需要手动管理内存(例如锻炼),否则更好的设计是使用智能指针,例如:

class a{
    std::unique_ptr<int> var;
public:
    a(int a): var(std::make_unique<int>(5)){};
    ~a()
    {}
}