有如下程序: #include #include using namespace std; class TV{ public: Tv(int s=2):size(s){} TV(const TV&t)

admin2021-05-06  16

问题 有如下程序:
    #include
    #include
    using namespace std;
    class TV{
    public:
    Tv(int s=2):size(s){}
    TV(const TV&t):size(t.size){}
    ~TV(){cout<    private:
    int size;
    };
    int main(){
    TV room1(1),room2(room1),room3;
    TV*roomPtr=new TV(3);
    delete roomPtr;
    return 0;
    }
    运行时的输出结果是(    )。

选项 A、3211
B、3210
C、3121
D、2323

答案A

解析 由题意可知,输出size的值是在析构函数中,main函数中有四个对象room1,room2,room3和roomPtr指向的对象,在对象rooml中,调用构造函数初始化size的值为1;对象room2中,调用复制构造函数用room1.size初始化,所以room2的size值也是1;对象room3中,调用默认构造函数size值是2;ro-omPtr指向的对象调用构造函数初始化size的值为3;在释放各个对象时,首先调用roomPtr指向的对象的析构函数,输出roomPtr指向对象的size值3;在程序运行结束后,编译器会按照对象构造顺序的相反顺序依次调用析构函数释放room3、room2、room1对象,所以依次输出211,综上输出结果为3211,答案为A选项。
转载请注明原文地址:https://jikaoti.com/ti/LNh0FFFM
0

最新回复(0)