代码C++,完整的程序

2、自定义一个栈类Stack,能够实现入栈操作push,出栈操作pop,栈是否为空isEmpty,栈是否满isFull入栈时如果栈满了就输出Stack is full并返回false。出栈时如果栈空就输出Stack is empty并返回false。创建栈对象时要给出
正整数n表示栈的容量。主程序中输入正整数n,然后创建容量为n的栈s,然后对栈进行入栈操作,依次入栈11 22 3.3,出栈并输出出栈的值,然后再入栈4.4,输出s[1]的值(即栈中下标为1的值)。然后再出栈4次,每次如果出栈成功就输出出栈的值
输入10输出
3.3
2.2
4.4
2.2
1.1
Stack is empty

#include <iostream>
using namespace std;
class Stack{
private:
    int* data_;//存放栈中的数据
    int max_size_;//栈最大空间
    int top_;//栈顶
    //初始化栈
    void initStack() {
        data_ = new int(max_size_);//分配栈空间
        top_ = -1;//初始化栈顶
    }
public:
    //默认空间为10
    Stack() {
        max_size_ = 10;
        initStack();
    }
    //设置最大空间
    Stack(int max_size) {
        max_size_ = max_size;
        initStack();
    }
    ~Stack() {
        delete data_;
    }
    //是否栈空
    int isEmpty() {
        return (top_ == -1)?1:0;
    }
    //是否栈满
    int isFull() {
        return (top_ >= max_size_)?1:0;
    }
    //进栈
    int push(int x) {
        if(isFull())
            return 0;
        else
            data_[++top_] = x;
        return 1;
    }
    //出栈
    int pop(int &x) {
        if(isEmpty())
            return 0;
        else
            x = data_[top_--];
        return 1;
    }
    //清除栈
    void clear(){
        top_ = -1;
    }
};
int main(int argc, char const *argv[]) {
    int  n;
    cin>>n;
    Stack stack(n);
    stack.push(1.1);
    stack.push(2.2);
    stack.push(3.3);
    int a;
    stack.pop(a);
    cout<<a<<endl;
    stack.push(4.4);
    stack.pop(a);
    stack.pop(a);
    cout<<a<<endl;
    int r = stack.pop(a);
    int count = 0;
    while(r != 0)
    {
        count++;
        cout<<a<<endl;
        r = stack.pop(a);
    }
    if(count<4)
        cout<<"Stack is empty"<<endl;
    return 0;
}