有如下程序: #include<iostream> using namespace std; class TestClass{ int k; public: TestClass(int x=1):k(x)

admin2012-01-20  27

问题 有如下程序:
   #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

解析 定义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) 。
转载请注明原文地址:https://jikaoti.com/ti/KaL0FFFM
0

最新回复(0)