Data Structure C++

#include 
using namespace std;
#define SIZE 100
class QueueClass {
  int queue[SIZE]; 
  int head, tail; 
public:
  QueueClass(); 
  void q(int num); 
  int deq();  
};
QueueClass::QueueClass()
{
  head = tail = 0;
}
void QueueClass::q(int num)
{
  if(tail+1==head || (tail+1==SIZE && !head)) {
    cout << "Queue is full\n";
    return;
  }
  tail++;
  if(tail==SIZE) tail = 0; // cycle around
  queue[tail] = num;
}
int QueueClass::deq()
{
  if(head == tail) {
    cout << "Queue is empty\n";
    return 0;                    // or some other error indicator
  }
  head++;
  if(head==SIZE) head = 0;       // cycle around
  return queue[head];
}
int main()
{
  QueueClass queue1, queue2;
  int i;
  for(i=1; i <=10; i++) {
    queue1.q(i);
  }
  queue2 = queue1;
  for(i=1; i <=10; i++) 
    cout << "Dequeue 1: " << queue1.deq() << endl;
  for(i=1; i <=10; i++) 
    cout << "Dequeue 2: " << queue2.deq() << endl;
  return 0;
}