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

admin2013-02-27  29

问题 有如下程序:
    #include
    using namespace std;
    class TestClass{
       int k;
    public:
       TestClass(int x=1):k(x){}
       ~TestClass (){cout<    };
    int main(){
       TestClass a[]={TestClass(3),TestClass(3),TestClass(3)};
       TestClass*p=new TestClass[2];
       delete[]p;
       return 0:
    }
    这个程序的输出结果是___________。

选项

答案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/D3L0FFFM
0

最新回复(0)