选择题   有如下程序:
    #include<iostream>
    #include<string>
    using namespace std;
    class TV{
    public:
    Tv(int s=2):size(s) {}
    TV(const TV&t):size(t.size) {}
    ~TV() {cout<<size;}
    private:
    int size;
    };
    int main(){
    TV room1(1), room2(room1), room3;
    TV*roomPtr=new TV(3);
    delete roomPtr;
    return 0;
    }
    运行时的输出结果是______。
 
【正确答案】 A
【答案解析】由题意可知,输出size的值是在析构函数中,main函数中有四个对象room1,room2,room3和roomPtr指向的对象,在对象room1中,调用构造函数初始化size的值为1;对象room2中,调用复制构造函数用room1.size初始化,所以room2的size值也是1;对象room3中,调用默认构造函数size值是2;roomPtr指向的对象调用构造函数初始化size的值为3;在释放各个对象时,首先调用roomPtr指向的对象的析构函数,输出roomPtr指向对象的size值3;在程序运行结束后,编译器会按照对象构造顺序的相反顺序依次调用析构函数释放room3、room2、room1对象,所以依次输出211,综上输出结果为3211,答案为A选项。