65,186
社区成员




class A {
public:
A(int n,int m){
}
};
A *p = new A[3]{ { 1,2 },{ 1,2 },{ 1,3 } };
ptr = new B[3]; //在堆内存里创建了连接地址的3个B对象,调用了3次默认构造函数,首地址赋给ptr
ptr[0] = B(); //调用B的默认构造函数在栈内存创建一个匿名对象,调用了1次默认构造函数,再调用B的默认operator= 运算拷贝赋值给堆内存上的ptr[0],此行结束时,析构匿名对象调用1次析构函数。
// 后面两句分别调用了对应的有参构造函数创建匿名对象,拷贝赋值,类似。最后delete时3次析构,释放堆内存。