C++中输出的结果怎么看

img

实例化P1的时候调用一次无参构造函数,即Myclass p1,这里调用无参构造函数,显示 A
p2是指针,声明的时候不会调用构造函数,所以在Myclass *p2这里,不会调用任何构造函数。在new的时候调用构造函数,p2使用的是带参构造函数,new的时候打印X。
析构的时候显示两次B
所以结果是AXBB。答案选D

编译器运行结果:

img

int main()
{
    MyClass p1,*p2; //p1调用无参构造函数实例化,指针只有在new的时候才调用构造函数
    p2=new MyClass('X');
    delete p2; //显示调用析构函数
    return 0;
    //这里调用p1的析构函数
}

跟p1没啥关系应该 就是p2自己的无参数构造析构在有参构造