有如下程序: #include <iostream.h> using namespace std; class Stack { public: Stack(unsigned n=10):size(n){rep_=ne

admin2010-12-16  47

问题 有如下程序:    #include <iostream.h>    using namespace std;    class Stack    {    public:      Stack(unsigned n=10):size(n){rep_=new int [size]; top=0;}      Stack(Stack&s): size (s.size)      {        rep_=new int[size];        for (int i=0;i<size;i++)          rep_=s.rep_;        top=s.top;      }       ~Stack(){delete[]rep_;}      void push(int a){rep_[top]=a; top++;}      int pop(){--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++)        sl.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;    }    执行上面程序将输出(    )。

选项 A、4,3,2,1,
B、4,3,6,7,2,1,
C、4,3,6,2,1,
D、1,2,3,4,

答案C

解析 此题综合考查了类与对象、循环语句、指针等知识点。在主函数main中,先定义了类Stack的对象s1,通过循环将1、2、3、4压入堆栈内;然后定义对象s2,并用对象s1来初始化,所以s2的大小也是10。第二个循环将4、3弹出并输出,然后将6压入s2的堆栈,然后将s2中剩下的值全部弹出,即6、2、1。
转载请注明原文地址:https://jikaoti.com/ti/fZL0FFFM
0

相关试题推荐
最新回复(0)