Как объединить массивы на c++?
Использовать std::vector и его метод append в частности.
Вам нужно выделить новый массив размер которого = размер_массива_1 + размер_массива_2, а после скопировать в него данные по очереди из 1го и из 2го.
В вашем коде в функции push создаются новые массивы:int* base = new int[size];
//...
int* copy = new int[size];
и эти массивы видны только до конца функции push,  а оригинальные вы не трогаете вообще, а только освобождаете по ним память.
Функция push должна выглядеть как-то так(код набирал тут):push(int arg){
       new *int new_array = new int[size+1]
       for (int i = 0; i < size; i++){
          new_array[i]=base[i];
       }
       new_array[size] = arg;
       delete[] base;
       base = new_array;
       size++;
}