这听起来可能有点奇怪,但如果我让代码使用delete [],如下所示:{ delete [] test //Does// delete test (This is the standard syntax)当然,我尝试过编译和运行,delete []没有返回任何错误。根据的说法,delete[]运算符首先为数组中的每个元素调用适当的析构函数
第三条规则是众所周知的,它说,如果必须定义析构函数,那么很可能需要定义副本构造函数和赋值运算符。然而,最近在一些代码中,我偶然发现了一个“第二条规则”:只有析构函数和副本构造函数被定义,赋值操作符留给编译器来定义。我的第一个想法是“这一定是一个错误”,但现在我不确定,因为所有编译器(gcc,msvs,英特尔)都会产生赋值操作符,称为复制构造函数。简化后的类如下所示: size_t size;
int