int main() { A * p = new A[2]; A * p p2 = new A; A a; delete []p;} 上例中一共调用3次析构函数,因为new出来的对象,如果不delete,就不会调用析构函数 不同的编译器中复制构造函数的表现是不同的 因为gcc对这段代码进行了优化,VS是根据C++标准gcc直接将b的返回值给了a,而没用生成临时对象。