中易网

动态创建对象数组

答案:2  悬赏:80  
解决时间 2021-12-22 20:02
#include
class B
{int x;
public:
B(){x=0;cout<<"Constructor1"< B(int i){x=i;cout<<"Constructor2"< ~B(){cout<<"Destructor"< void print(){cout<<"x="<};
void main()
{B *ptr;
ptr=new B[2];
ptr[0]=B();
ptr[1]=B(5);
for(int i=0;i<2;i++)
ptr[i].print();
delete []ptr;
}
为什么输出的结果是:
Constructor1
Constructor1
Constructor1
Destructor
Constructor2
Destructor
x=0
x=5
Destructor
Destructor

此答案的第三行至第四行我不知道是怎么得来的,难道是先new出来一个空间,然后在自动把原来的空间给delete掉?
最佳答案
ptr[0]=B(); 这条语句是赋值操作,在赋值操作函数中它会先初始化一个临时对象,然后把这个临时对象赋值给ptr[0],然后把这个临时对象析构掉了。
全部回答
以下是运行结果: defaultconstructorcalled. defaultconstructorcalled. deleting... destructorcalled. destructorcalled. 你的结果已经很明白了啊! 1.都调用了默认构造函数,因为你创建2个对象时都未给参数; 2.执行这两句时,对象空间已经分配好了,不调用构造函数了.只是执行附值的任务; 3.因为你是用new分配的动态数组空间,数组空间的释放就必须写[],其实在这儿是省略了[2]中的2的; 4.delete[]ptr;对应的是deleting...;后面那2句是析构函数根据你的构造函数自动调用的,作用是释放不同构造函数申请的动态内存;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
巨野县公安局西城派出所办公地址在什么地方,
营里派出所地址在哪,我要去那里办事
梦见把自己的脚自己脚锯了
大学部门面试 被问的问题多或少是有什么暗示
公司出了新制度没有通知可以执行吗
月见草花是不是夜来香
怎样知道卵泡成熟并破裂
大谢集派出所地址在哪,我要去那里办事
用c#实现点击一个radiobutton 可以扣除50个积
上海唐镇瑞昌路385号招商银行能办理业务吗?
为什么明明喜欢对方,却要逃避
我的货已经发申通快递几天了货还在原地没动,
柳林派出所地址有知道的么?有点事想过去!
海尔冰箱在投入市场时的价格策略?
名艺烫染地址在哪,我要去那里办事
推荐资讯
通过工行网银办理跨行汇款,收款城市为什么没
自由侠和自由光是同一生产厂家吗
川藏线骑行的车一般选什么车
位势的意思是什么?位势的释义是什么啊?
公路车如何托运
数字155000的大写怎么写
按照网络转学的流程全部操作完,不知道什么原
有首歌里面有句词是:远去的渡口,彼岸的灯火,
觸桶的意思是什么?觸桶的释义是什么啊?
森薄的意思是什么啊?请解释下!
实木复合地板有点胶水和无胶水拼接两种,请问
如何在qq上查找看自己曾经对别人评价的映像
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?