I am trying to implement stack using linked list and class, and to the stack class constructor, I am giving reference variables as arguments with default value 0. But it shows an error when I do push operation with an integer literal. How can I implement it by using a default value and reference variable as well?
// ***** Stack using linked list ****
#include <iostream>
using namespace std;
class node{
    node* next;
    int data;
    public:
    node(int &d=0,node* n=NULL):data(d),next(n){}
    node(){}
    ~ node(){}
    friend class stack0;
  
};
class stack0{
   
    int size;
    node* head;
    public:
    
    stack0(){}
    stack0():size(-1),head( new node() ){}
    void push(int &t){
        if (size == -1){
            head->data=t;
            cout<<"& pushed "<<t<<" at "<<head<<" with size "<<size;
            size++;
        }
        else{
            node* temp;temp=head;
            head = new node(t,head);
            cout<<"& pushed "<<t<<" at "<<head<<" with size "<<size;
            head->next=temp;
            size++;
        }
    }
};
int  main(){
    stack0 s;
    s.push(10);
    return 0;
    
}
