C++题,关于构造函数和析构函数的。求解下面图片这题输出结果怎么得出来的。求详细的调用步骤及次数

2024年11月28日 16:00
有1个网友回答
网友(1):

先解释一个简单的例子:
main()
{
    A y = 4;
}
输出结果应该是:4 XxkXxk
y = 4调用的时类A的赋值运算符,而没有调用A的构造函数,所以这里不会输出东西
后面的4,会被默认生成一个A(4)临时对象,结果就相当于A y = A(4);那么刚才输出的4就是这个默认转换所产生的。第一个Xxk是这一句执行完以后,临时对象A(4)被销毁,调用析构函数产生的。第二个Xxk是main函数结束时清除局部变量y,调用的析构函数所产生的。
你上面的例子:A x[3]={1,2,3};会产生三个临时变量,调用三次构造函数,调用三次赋值运算符,调用三次析构函数,输出结果为
1 Xxk2 Xxk3 Xxk
p = new A[3];调用三次构造函数输出:0 0 0,因为构造函数的默认参数是0
delete []p;很简单,调用三次析构函数输出:XxkXxkXxk
main函数结束后删除四个局部变量x[3] y调用四次析构函数输出:XxkXxkXxkXxk
Game Over