C++ C++;删除函数中的局部变量

C++ C++;删除函数中的局部变量,c++,destructor,C++,Destructor,我有一个作用于类A的函数。类A在构造函数中分配一些内存,并在析构函数A中释放它::~A() 现在,如果 A someFunc() { //This is just to illustrate that it is possible for that variable to be overwritten few times before returning. A locA; for(some condition) { //Something something A forA(i

我有一个作用于类A的函数。类A在构造函数中分配一些内存,并在析构函数A中释放它::~A()

现在,如果

A someFunc()
{
//This is just to illustrate that it is possible for that variable to be overwritten few times before returning.

A locA;

for(some condition)
{
    //Something something
    A forA(i);
    //Something.
    if(end) locA = forAj;
}

return locA;
}
这个好吗?该类的析构函数是否在该for循环中每次再次创建时都被调用

该类的析构函数是否在该for循环中每次再次创建时都被调用


是的,变量具有自动存储功能,因此每当其中一个变量超出范围时,就会调用
的析构函数

如果您的类表现良好,则应适当处理
A
中分配的内存。请注意,这意味着在您的情况下,
A
还应该有一个合适的复制构造函数和一个复制赋值操作符,以便表现良好

有关最后一点的更多信息,请参阅

该类的析构函数是否在该for循环中每次再次创建时都被调用


是的,变量具有自动存储功能,因此每当其中一个变量超出范围时,就会调用
的析构函数

如果您的类表现良好,则应适当处理
A
中分配的内存。请注意,这意味着在您的情况下,
A
还应该有一个合适的复制构造函数和一个复制赋值操作符,以便表现良好

有关最后一点的更多信息,请参阅

该类的析构函数是否在该for循环中每次再次创建时都被调用


是的,变量具有自动存储功能,因此每当其中一个变量超出范围时,就会调用
的析构函数

如果您的类表现良好,则应适当处理
A
中分配的内存。请注意,这意味着在您的情况下,
A
还应该有一个合适的复制构造函数和一个复制赋值操作符,以便表现良好

有关最后一点的更多信息,请参阅

该类的析构函数是否在该for循环中每次再次创建时都被调用


是的,变量具有自动存储功能,因此每当其中一个变量超出范围时,就会调用
的析构函数

如果您的类表现良好,则应适当处理
A
中分配的内存。请注意,这意味着在您的情况下,
A
还应该有一个合适的复制构造函数和一个复制赋值操作符,以便表现良好



有关最后一点的更多信息,请参见。

如果您在
A
的构造函数中分配一些内存并在析构函数中释放它,您肯定需要阅读。是的,变量具有自动存储功能,因此每次其中一个超出范围时都会调用析构函数。这是,如果你的类表现良好。是的,每次都会调用析构函数,为什么不呢?@juanchopanza将其作为答案提交,我会接受。如果你在
A
的构造函数中分配一些内存并在析构函数中释放它,你肯定需要阅读。是的,变量具有自动存储功能,因此每次其中一个变量超出范围时都会调用析构函数。这是,如果你的类表现良好。是的,每次都会调用析构函数,为什么不呢?@juanchopanza将其作为答案提交,我会接受。如果你在
A
的构造函数中分配一些内存并在析构函数中释放它,你肯定需要阅读。是的,变量具有自动存储功能,因此每次其中一个变量超出范围时都会调用析构函数。这是,如果你的类表现良好。是的,每次都会调用析构函数,为什么不呢?@juanchopanza将其作为答案提交,我会接受。如果你在
A
的构造函数中分配一些内存并在析构函数中释放它,你肯定需要阅读。是的,变量具有自动存储功能,因此每次其中一个变量超出范围时都会调用析构函数。这是,如果你的类表现良好。是的,每次都会调用析构函数,为什么不呢?@juanchopanza将其作为答案提交,我会接受。谢谢。我什么都有。构造函数中的分配。在析构函数和适当的复制构造函数中释放它,以便以应该的方式处理它。@Hooch:您不是缺少赋值吗
locA=forAj
使用
operator=
@MSalters它使用复制构造函数。@Hooch:它不是初始化(
locA-forAj
),它只使用复制构造函数。这是常规任务;还有什么原因会有
操作员=
?谢谢。我什么都有。构造函数中的分配。在析构函数和适当的复制构造函数中释放它,以便以应该的方式处理它。@Hooch:您不是缺少赋值吗
locA=forAj
使用
operator=
@MSalters它使用复制构造函数。@Hooch:它不是初始化(
locA-forAj
),它只使用复制构造函数。这是常规任务;还有什么原因会有
操作员=
?谢谢。我什么都有。构造函数中的分配。在析构函数和适当的复制构造函数中释放它,以便以应该的方式处理它。@Hooch:您不是缺少赋值吗
locA=forAj
使用
operator=
@MSalters它使用复制构造函数。@Hooch:它不是初始化(
locA-forAj
),它只使用复制构造函数。这是常规任务;还有什么原因会有
操作员=
?谢谢。我什么都有。构造函数中的分配。在析构函数和适当的复制构造函数中释放它,以便以应该的方式处理它。@Hooch:您不是缺少赋值吗
locA=forAj
使用
operator=
@MSalters它使用复制构造函数。@Hooch:它不是初始化(
locA-forAj
),它只使用复制构造函数。这是常规任务;还有什么原因会有
操作符=