C++ 整数的动态分配
我正在做一个小练习,我在试图找出如何在类构造函数中为int值分配空间时遇到了一些问题。我知道这是无用的,不推荐,但这是我必须这样做的方式。我知道这是一个以前被问过的问题,这应该是一个简单的任务,但我找不到我的问题的答案,所以,我很抱歉重新发布。我只保留了代码中不起作用的部分。简化版本如下所示:C++ 整数的动态分配,c++,dynamic,C++,Dynamic,我正在做一个小练习,我在试图找出如何在类构造函数中为int值分配空间时遇到了一些问题。我知道这是无用的,不推荐,但这是我必须这样做的方式。我知道这是一个以前被问过的问题,这应该是一个简单的任务,但我找不到我的问题的答案,所以,我很抱歉重新发布。我只保留了代码中不起作用的部分。简化版本如下所示: class AAA{ int *var; AAA(int *v){ this->var = new int; this->var = v; } }; void main(){
class AAA{
int *var;
AAA(int *v){
this->var = new int;
this->var = v;
} };
void main(){ AAA a(15); }
感谢您的多次光临,很抱歉再次发帖
谢谢大家的回答!我没有忘记析构函数,只是在这里保持代码简单;再次感谢。真的很有帮助你想要的应该是
class AAA{
int *var;
AAA(int v){
this->var = new int;
*this->var = v;
}
};
int main(){ AAA a(15); return 0; }
不要忘记析构函数。您应该将
int
按值传递给构造函数,然后您可以使用参数v
分配一个新的int
,或者先分配空间,然后取消引用并分配值
AAA(int v){
var = new int(v);
}
请注意,现在需要定义析构函数,这样就不会泄漏内存
~AAA()
{
delete var;
}
除了一些其他的缺陷,你应该像这样修复你的代码
class AAA{
int *var;
AAA(int v) { // << no pointer here
var = new int(v);
}
};
int main() {
AAA a(15);
}
别忘了复制类会发生什么。为什么不模仿OP的意图呢?还有别忘了剩下的5个规则。
~AAA () {
delete var;
}