选择题   有下列程序:
      #include<iosteram.h>
      using namespace std;
      class Stack
      {
      public:
        Stack(unsignedn=10):size(n){rep_=new int [size];top=O;}
        Stack(Stack&s):size(s.size)
        {
            rep_=new int[size];
            for(int i=0;i<size;i++)
            rep_[i]=s.rep_[i];
          top=s.top;
        }
        ~Stack()<delete[]rep_;}
        void push(int A) {rep_[top]=a;top++;}
        intpop(){--top;return rep_[top];}
        bool isEmpty()const {return top==0;}
      private:
        int*rep_;
        unsigned size,top;
      };
      int main()
      {
        Stack s1;
        for(int i=1;i<5;i++)
          s1.push(i);
        Stack s2(s1);
        for(int i=1;i<3;i++)
          cout<<s2.pop()<<',';
        s2.push(6);
        s1.push(7);
        while(!s2.isEmpty())
          cout<<s2.pop()<<',';
        return 0;
      }
      执行上面程序的输出结果是   
 
【正确答案】 C
【答案解析】此题综合考查了类与对象、循环语句、指针等知识点。在主函数main中,先定义了类Stack的对象s1,通过循环将1、2、3、4压入堆栈内;然后定义对象s2,并用对象s1来初始化,所以s2的大小也是10。第二个循环将4、3弹出并输出,然后将6压入s2的堆栈,然后将s2中剩下的值全部弹出,即6、2、1。