我试图做一个小练习,并且我在尝试弄清楚如何在类构造函数中为int值分配空间时遇到了一些问题。我知道这是无用的,不推荐,但这是我必须这样做的方式。我知道这是一个之前被问过的问题,这应该是一个简单的任务,但我无法找到问题的答案,所以,我很抱歉转发。我只保留了无效的代码部分。简化版本如下所示:
class AAA{
int *var;
AAA(int *v){
this->var = new int;
this->var = v;
} };
void main(){ AAA a(15); }
感谢您一次又一次,我很抱歉转发。
谢谢大家的回答!我没有忘记析构函数,只是在这里保持代码简单;再次感谢。真的很有帮助
答案 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;
}