考虑以下代码:
$(".a").click(function(){
var r1 = $(this).attr("src").replace("230x128.","490x437.");
$('#thumb').attr("src", r1);
});
标准定义的struct A{...};
A a[100];
A* pa = new A[100];
delete[] pa;
/ a
元素的销毁顺序是否是实现定义的(第二种情况pa
不是用户定义的)。
答案 0 :(得分:3)
数组元素将按照构造的相反顺序进行破坏,元素99
是第一个被破坏的元素,然后是元素98
,97
,96
......等。和元素0
是最后一个。
请参阅isocpp析构函数常见问题解答。
从最新草案的5.3.5.6开始:
如果delete-expression的操作数值不是空指针值,则delete-expression将为 为对象或要删除的数组的元素调用析构函数(如果有)。 在一个案例中 数组,元素将按地址递减的顺序销毁(即完成的顺序相反) 他们的构造函数;见12.6.2)。
还有来自12.6.3(这不是delete
关键字特有的):
初始化类对象数组(显式或隐式)并初始化元素 通过构造函数,应按照下标顺序为数组的每个元素调用构造函数; 见8.3.4。 [注意:数组元素的析构函数按其构造的相反顺序调用。 - 结束 注意]