C++ 如何在构造函数中初始化堆分配变量
这是我的“代码”: 现在当然不行了。 如何从构造函数初始化堆变量?(我不想在构造函数中分配heap变量)就像这样:C++ 如何在构造函数中初始化堆分配变量,c++,C++,这是我的“代码”: 现在当然不行了。 如何从构造函数初始化堆变量?(我不想在构造函数中分配heap变量)就像这样: class a{ int *var; public: a(int a):var(new int(5)){}; ~a() { delete var; } } 内存分配需要在构造函数中进行。此外,还需要确保在析构函数中解除分配 注意,没有使用构造函数的参数a。如果您想使用此值初始化类变量a,则应将分配调用更改为newvar(a)
class a{
int *var;
public:
a(int a):var(new int(5)){};
~a()
{
delete var;
}
}
内存分配需要在构造函数中进行。此外,还需要确保在析构函数中解除分配
注意,没有使用构造函数的参数a
。如果您想使用此值初始化类变量a
,则应将分配调用更改为newvar(a)
注2:除非您特别需要手动管理内存(例如用于练习),否则更好的设计是使用智能指针,例如:
class a{
std::unique_ptr<int> var;
public:
a(int a): var(std::make_unique<int>(5)){};
~a()
{}
}
a类{
std::唯一的ptr变量;
公众:
a(inta):var(std::make_unique(5)){};
~a()
{}
}
像这样:
class a{
int *var;
public:
a(int a):var(new int(5)){};
~a()
{
delete var;
}
}
内存分配需要在构造函数中进行。此外,还需要确保在析构函数中解除分配
注意,没有使用构造函数的参数a
。如果您想使用此值初始化类变量a
,则应将分配调用更改为newvar(a)
注2:除非您特别需要手动管理内存(例如用于练习),否则更好的设计是使用智能指针,例如:
class a{
std::unique_ptr<int> var;
public:
a(int a): var(std::make_unique<int>(5)){};
~a()
{}
}
a类{
std::唯一的ptr变量;
公众:
a(inta):var(std::make_unique(5)){};
~a()
{}
}
为什么构造函数有一个名为a
的参数?首先,它没有被使用,其次,把它称为类是个坏主意。那么为什么不想在构造函数中分配heap变量呢?为什么要给构造函数分配一个名为a
的参数呢?首先,它没有被使用,其次,把它称为类是个坏主意。那你为什么不想在构造函数中分配heap变量呢?@AnatolyS-那应该是一个注释,而不是一个编辑。@Smeeheey:好的,但是如果你决定显示std::unique\u ptr,你应该显示一个首选的构造方法。我不反对,否则我会把它改回来。但是你看到了把它公开的感觉有多好吗?:)@AnatolyS-这应该是一个注释,而不是编辑。@Smeeheey:好的,但是如果你决定显示std::unique\u ptr,你应该显示一个首选的构造方法。我不反对,否则我会把它改回去。但是你看到了把它公开的感觉有多好吗?:)