有如下程序 #include <iostream> #include <iomanip> using namespace std; class MyClass { public:MyClass() { cout<<’A’; }MyClass(char c){ cout<<c; }~MyClass(){ cout<<’B’; } }; int main( ) {MyClass p1,*p2;p2=new MyClass(’X’); delete p2; return 0; } 执行这个程序屏幕上将显示输出
A.ABX
B.ABXB
C.AXB
D.AXBB
参考答案:D
解析: 本题主要考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。本例的main()函数中,第1条语句定义了一个MyClass对象和一个MyClass类型指针,此时创建了1个对象,因为没有构造参数,故会调用默认构造函数,输出一个’A’。第2条语句通过new运算符动态创建了1个MyClass对象,此时传入了一个构造参数’X’,所以会调用相应的构造函数,输出一个’X’。第3条语句使用delete运算符释放了1个对象,所以会调用1次析构函数,输出一个’B’。最后,当main()函数结束时,局部变量p1的生存期结束,故还要调用1次析构函数输出一个’B’。因此,最终输出结果是AXBB,应该选择D。