一个复制构造函数填程?进来测试一下你的智商!please

btw505 2004-11-17 10:52:01
#include <iostream.h>
#define MAX_LEN 10 //栈的最大长度

class Stack
{private:
int *piBuffer;
int iTop;
public:
Stack();
~Stack();
Stack(int size);
Stack(const Stack&)
void push(int);
int pop();
bool isFull(Stack &);//判断栈为满
bool isEmpty(Stack &);//判断栈为空
};

......

int main()
{Stack c(10);
c.push(1);
c.push(2);
Stack c1=c;
cout<<c1.pop()<<endl;
cout<<c1.pop()<<endl;
return 0;
}



谁能帮我写写其中函数的代码啊,我写的是错的,实现的功能就是把一个size大小的一个栈,用复制构造函数把c复制c1;再输出,你们帮帮我行不?
...全文
44 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
beysion 2004-11-18
  • 打赏
  • 举报
回复



#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 20

class Stack //一个栈
{
public:
Stack();
Stack(int size);
~Stack();
void push(char);
Stack(const Stack&);
char pop();
bool IsEmpty();
bool IsFull();

private:
char *piBuffer;
int iTop;
};

Stack::Stack()
{
piBuffer=NULL;
iTop=-1;
}

Stack::Stack(int size)
{
piBuffer=new char[size];
iTop=-1; ////////////这里是加的一句
}

Stack::~Stack()
{
delete[] piBuffer;
}

void Stack::push(char c)
{
if(IsFull())
{
cerr<<"此栈已满!"<<endl;
exit(1);
}
piBuffer[++iTop]=c;
}

char Stack::pop()
{
if(IsEmpty())
{
cerr << "此栈已为空!!"<< endl;
exit(2);
}
return piBuffer[iTop--];
}

bool Stack::IsEmpty()
{
return (iTop==-1);
}

bool Stack::IsFull()
{
return (iTop==MAX_LEN-1);
}

Stack::Stack(const Stack& r):iTop(r.iTop)
{

piBuffer= new char[MAX_LEN];

strcpy(piBuffer,r.piBuffer);
}



int main()
{
Stack c(MAX_LEN);

c.push('1');
c.push('2');
Stack c1(c);
cout<<c1.pop()<<endl;
cout<<c1.pop()<<endl;

return 0;
}

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧