我是 C++ 世界的新手... 我对 C++ 中的析构函数有疑问。
如果有这样一个类:
class TestClass {
public:
double *array;
}
当我将一个数组的指针指向 *array
并再次放置另一个数组并删除 Testclass 实例时,我就不能再访问旧的吗?
变成错误:
int main() {
TestClass tc;
tc.array = new double[10];
double *array2 = tc.array;
tc.array[3]=9;
tc.array = new double[10];
delete &tc; // <------------------- this one.
std::cout<<array2[3]<<std::endl;
// std::cout<<tc.array[3]<<array2[3]<<std::endl;
}
如果没有delete &tc
并激活注释行(最后一行),
'09' 出现,(tc.array[3] != array2[3] => tc.array != array2)
这并不意味着 tc.arrray 不是 *array2 中的那个??
怎么了?
最佳答案
tc
是函数范围的变量(分配在堆栈上)。它没有分配 new
。你不能删除它。函数返回时会自动释放
关于c++ - Denstructor 删除一个已经被替换的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58916927/