有下列程序:#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;}执行上面程序的输出结果是( )。
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。