动态分配int

时间:2014-11-19 17:11:25

标签: c++ dynamic

我试图做一个小练习,并且我在尝试弄清楚如何在类构造函数中为int值分配空间时遇到了一些问题。我知道这是无用的,不推荐,但这是我必须这样做的方式。我知道这是一个之前被问过的问题,这应该是一个简单的任务,但我无法找到问题的答案,所以,我很抱歉转发。我只保留了无效的代码部分。简化版本如下所示:

class AAA{
int *var;
AAA(int *v){
    this->var = new int;
    this->var = v;
}  };
void main(){ AAA a(15); }

感谢您一次又一次,我很抱歉转发。

谢谢大家的回答!我没有忘记析构函数,只是在这里保持代码简单;再次感谢。真的很有帮助

3 个答案:

答案 0 :(得分:3)

你想要的是

class AAA{
    int *var;
    AAA(int v){
        this->var = new int;
        *this->var = v;
    }
};
int main(){ AAA a(15); return 0; }

不要忘记析构函数。

答案 1 :(得分:0)

您应该将int按值传递给构造函数,然后您可以使用参数int分配新的v,或先分配空格然后取消引用并分配值

AAA(int v){
    var = new int(v);
}

请注意,您现在需要定义析构函数,以免泄漏内存

~AAA()
{
    delete var;
}

答案 2 :(得分:0)

除了一些其他缺陷,你应该像这样修复你的代码

class AAA{
    int *var;
    AAA(int v) { // << no pointer here
         var = new int(v);
    }  
};

int main() { 
    AAA a(15); 
}

注意void main()无效。

另请注意,您应该使用析构函数正确释放内存

~AAA () {
    delete var;
}