C++ C++;删除函数中的局部变量
我有一个作用于类A的函数。类A在构造函数中分配一些内存,并在析构函数A中释放它::~A() 现在,如果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 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
),它只使用复制构造函数。这是常规任务;还有什么原因会有操作符=
?