有如下程序     #include <iostream>     #include <iomanip>     using namespace std;     class MyClass {     public:        MyClass() {

admin2017-10-17  25

问题 有如下程序     #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。
转载请注明原文地址:https://kaotiyun.com/show/NXAp777K
0

最新回复(0)