A-A+

有如下程序: include<iostream> using namespace std;

2022-08-05 20:46:49 问答库 阅读 172 次

问题详情

有如下程序:
include<iostream>
using namespace std;
class TestClass{
int k;
public:
TestClass(int x=1):k(x){}
~TestClass O{cout<<k;}
};
int main(){
TestClass a[]={TestClass(3),TestClass(3),TestClass(3)};
TestClass *p=new TestClass[2];
delete []p;
return ():
}
这个程序的输出结果是______。请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:11333
11333 解析:定义TestClass型数组a时,将导致TestClass的构造函数被执行三次,每次执行时,其传入参数为3,定义TestClass指针p时,将执行两次默认构造函数,其参数为1,执行"delete []p"时,将执行TestClass的构造函数,输出p[0].k,p[1].k(两者均为1) ,在程序运行结束后,将释放局部变量,从而导致数组a中的三个元素被析构,输出a[0],a[1],a[2]中的值(均为3) 。

考点:程序