Code Bye

关于数组的一个元素的析构问题

在看《数据结构、算法与应用》这本书的线性表-数组描述时,看到这个函数
template<class T>
void arrayList<T>::erase(int the Index)
{
	checkIndex(theIndex);
	copy(element + theIndex + 1, element + listSize, element + theIndex);
	element[--listSize].~T();    //调用析构函数
}

数组的单个元素能析构吗?
本人在VS2015上试了一下

#include<iostream>
using namespace std;
template<class T>
void test()
{
int* p = new int[10];

for (int i = 0; i < 10; i++)
	p[i] = i;
	p[9].~T();
	cout << p[9]<<endl;
}
int main()
{
	test<int>();
	return 0;
}

结果是这样的

貌似不能析构
所以本人想问数组单个元素能不能析构

解决方案

15

这个只是调用 析构函数, 并不释放内存.  假如析构函数里面什么也没做, 那就没有什么效果.
而且即使你调用释放了内存, 也并不意味着不能访问这块内存, 或是会得到结果 0. 访问已释放内存的结果是未定义的, 不一定就会出错.

5

析构不等于会清除其中的内容。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于数组的一个元素的析构问题