我在网上遇到了一个练习,这是文字:
编写一个将管理整数堆栈的类 int_stack。整数值将存储在动态分配的数组中。
此类将提出以下成员函数:
int_stack (int n) 构造函数,将动态分配 n 个整数,
int_stack() 构造函数分配 20 个整数,
~ int_stack ( ) 析构函数,
int empty ( ) 如果堆栈为空,则返回值为 1,否则为 0,
int full ( ) 如果堆栈已满,则返回值为 1,否则返回值为 0,
void operator < (int p) 将 p 值压入(添加)堆栈,
int operator >(int p) 返回(并移除)栈顶的值
我试图实现它,但 > (拉)运算符不起作用。
这是我的代码:
int_stack.h
class int_stack
{
private:
int* stack;
unsigned int n, p;
void init(unsigned int n);
public:
int_stack(unsigned int n);
int_stack();
~int_stack();
int empty();
int full();
void operator <(int i);
int operator >(int i);
};
int_stack.cpp
#include "int_stack.h"
void int_stack::init(unsigned int n)
{
this->stack = new int[n];
this->p = 0;
}
int_stack::int_stack(unsigned int n)
{
this->init(n);
}
int_stack::int_stack()
{
this->init(20);
}
int_stack::~int_stack()
{
delete this->stack;
}
int int_stack::empty()
{
return (this->p == 0 ? 1 : 0);
}
int int_stack::full()
{
return (this->p == n-1 ? 1 : 0);
}
void int_stack::operator <(int i)
{
if (!this->full())
this->stack[p++] = i;
}
int int_stack::operator >(int i)
{
if(!this->empty())
return this->stack[p--];
return 0;
}
我究竟做错了什么?